1.描述
如果您定义了一个属性,会根据您设置的属性类型默认为其生成合适的编辑器。
2.内置属性编辑器
内置属性编辑器如下表所示。
属性类型 | 编辑器 | 示例 |
---|---|---|
String | 文本编辑器 | 文本输入框中的水印 |
Int | 整型编辑器 | 单选按钮单元格类型中的项目 |
bool | 复选框编辑器 | 只读 |
Double | 小数编辑器 | 百度地图单元格类型中的经度 |
Enum | 组合框 | 菜单单元格类型中的菜单颜色主题 |
TimeSpan | 时间编辑器 | 时间单元格类型中的开始时间 |
ImageValue | 选择图片编辑器 | 数据导航按钮中的选择图片 |
List<Command> | 命令编辑器 | 按钮中的编辑命令 |
例如,如下的代码中,数据类型及对应的编辑器。
public class DemoCellType : CellType { public string MyStringProperty { get; set; } public int MyIntProperty { get; set; } public bool MyBoolProperty { get; set; } public double MyDoubleProperty { get; set; } public MyEnum MyEnumProperty { get; set; } public TimeSpan MyTimeSpanProperty { get; set; } public ImageValue MyImageProperty { get; set; } public List<Command> MyCommandListProperty { get; set; } } public enum MyEnum { EnumValue1, EnumValue2, EnumValue3 }
在设计器中显示如下:
3.其他编辑器
还有一些编辑器,您可以通过手工来指定。
编辑器 | 示例 |
---|---|
链接编辑器 | 菜单单元格类型中的“编辑菜单项目”属性。 |
数据表选择器 | 数据导航按钮单元格类型中的“导航表”属性。 |
下面是的示例中,重写了GetEditorSetting方法,指定编辑器为链接编辑器和数据表选择器:
[Designer("DemoCellType.DemoCellTypeDesigner, DemoCellType")]//格式为 "Namespace.ClassName, AssemblyName" public class DemoCellType : CellType { public List<ColumnInfo> ColumnInfos { get; set; } public string SelectedTableName { get; set; } } public class DemoCellTypeDesigner : CellTypeDesigner<DemoCellType> { public override EditorSetting GetEditorSetting(PropertyDescriptor property, IBuilderContext builderContext) { if (property.Name == "SelectedTableName") { return new TableComboTreeSelectorEditorSetting(); } if (property.Name == "ColumnInfos") { //here you can open the dialog you write... return new HyperlinkEditorSetting(new EditColumnCommand()); } return base.GetEditorSetting(property, builderContext); } } public class ColumnInfo { public string ColumnName { get; set; } public ForguncyTableColumnType ColumnType { get; set; } } public class EditColumnCommand : ICommand { public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter) { return true; } public void Execute(object parameter) { //open your dialog... } }
效果如下: