DevExpress实现禁用TreeListNode CheckBox的方法
程序员文章站
2024-02-19 08:18:52
很多时候在进行c#项目的实际开发中,会需要根据条件来设置节点不可勾选,查看devexpress文档发现通过其customdrawnodecheckbox和beforeche...
很多时候在进行c#项目的实际开发中,会需要根据条件来设置节点不可勾选,查看devexpress文档发现通过其customdrawnodecheckbox和beforechecknode事件组合使用可以达到,一般设置节点不可以勾选的规则是一样的,所以对代码进行稍微封装。本文实例就展示了devexpress实现禁用treelistnode checkbox的方法。具体如下:
主要功能代码如下:
/// <summary> /// 禁用checkbox /// 说明 /// 在customdrawnodecheckbox事件中使用 /// </summary> /// <param name="tree">treelist</param> /// <param name="conditionhanlder">委托</param> /// <param name="e">customdrawnodecheckboxeventargs</param> public static void disabledcheckbox(this treelistnode tree, predicate<treelistnode> conditionhanlder, customdrawnodecheckboxeventargs e) { if (conditionhanlder(e.node)) { e.objectargs.state = objectstate.disabled; } } /// <summary> /// 禁止操作节点checkbox /// 说明 /// 在beforechecknode事件中使用 /// </summary> /// <param name="tree">treelistnode</param> /// <param name="conditionhanlder">委托</param> /// <param name="e">checknodeeventargs</param> public static void disabledsetcheckbox(this treelistnode tree, predicate<treelistnode> conditionhanlder, checknodeeventargs e) { if (conditionhanlder(e.node)) { e.cancheck = false; } }
使用示例如下:
/// <summary> /// customdrawnodecheckbox事件 /// </summary> void lhtree_customdrawnodecheckbox(object sender, customdrawnodecheckboxeventargs e) { e.node.disabledcheckbox(disablenodecheckboxrule, e); } /// <summary> /// beforechecknode事件 /// </summary> void lhtree_beforechecknode(object sender, checknodeeventargs e) { e.node.disabledsetcheckbox(disablenodecheckboxrule, e); } /// <summary> /// disable treelistnode规则 /// </summary> /// <param name="node"></param> /// <returns></returns> private bool disablenodecheckboxrule(treelistnode node) { bool _disable = false; if (oplampcfglist.count > 0) { string _cabid = oplampcfglist[0].cabid; nodetype _curtype = node.getnodetype(); if (_curtype == nodetype.lamp)//当节点是灯类型且父节点keyid等于_cabid时候,屏蔽checkbox { _disable = node.parentnode.parentnode.getkeyid().equals(_cabid); } if (_curtype == nodetype.pole)//当节点是杆类型且父节点keyid等于_cabid时候,屏蔽checkbox { _disable = node.parentnode.getkeyid().equals(_cabid); } if (_curtype == nodetype.cab && node.getkeyid().equals(_cabid))//当节点是箱类型keyid等于_cabid时候,屏蔽checkbox { _disable = true; } if (_curtype == nodetype.area || _curtype == nodetype.cabsgrouproot)//当节点类型等于地域或者根节点时候,屏蔽checkbox { _disable = true; } } return _disable; }
代码运行效果如下:
希望本文代码能对大家有所帮助!
推荐阅读
-
DevExpress实现根据行,列索引来获取RepositoryItem的方法
-
DevExpress实现禁用TreeListNode CheckBox的方法
-
DevExpress实现GridControl删除所有行的方法
-
DevExpress实现GridControl显示Gif动画的方法
-
DevExpress实现GridControl单元格编辑验证的方法
-
DevExpress实现TreeList节点互斥的方法
-
DevExpress实现TreeList父子节点CheckState状态同步的方法
-
DevExpress实现TreeList按条件隐藏节点CheckBox的方法
-
DevExpress中GridControl列转义的实现方法
-
DevExpress实现自定义TreeListNode的Tooltip的方法