默认情况下,双击一个单元格,使单元格进入编辑状态,来编辑单元格的值,但是,有些单元格类型并不支持与单元格的值绑定(例如菜单、图文列表等),此时双击进入编辑状态的行为就比较奇怪。
单元格插件可以通过实现 IDefaultEditAction 接口,可以定制单元格默认的双击行为。
示例代码
修改 MyPluginCellType.cs 文件:
[Designer("MyPlugin.Designer.MyPluginCellTypeDesigner, MyPlugin")] public class MyPluginCellType : CellType { [ListProperty] public List<MyObj> MyProperty { get; set; } } public class MyObj : ObjectPropertyBase { public string Name { get; set; } public string Description { get; set; } }
修改 Designer\MyPluginCellTypeDesigner.cs 文件:
public class MyPluginCellTypeDesigner : CellTypeDesigner<MyPluginCellType>, IDefaultEditAction { public void OnStartEditStarting(IBuilderContext builderContext, StartEditingEventArgs args) { args.DefaultActionPropertyName = nameof(MyPluginCellType.MyProperty); args.CancelEdit = true; } }
代码说明:
- MyPluginCellType 单元格声明了 MyProperty 列表属性。
- MyPluginCellTypeDesigner 实现了 IDefaultEditAction 接口,在OnStartEditStarting 方法中 取消了默认编辑行为并制定了新的默认行为属性为 MyProperty。
效果:
- 在设计器中添加 MyPluginCellType 单元格。
- 双击单元格,单元格没有像之前一样进入编辑状态,而是弹出了编辑 MyProperty 属性的对话框。
注意
DefaultActionPropertyName 属性对应的编辑器必须是超链接类型的,例如列表属性、命令属性、数据源属性等。