DevExpress实现TreeList父子节点CheckState状态同步的方法
程序员文章站
2024-02-18 12:07:34
本文实例展示了devexpress实现treelist父子节点checkstate状态同步的方法,在项目开发中有一定的应用价值,具体实现方法如下:
主要功能代码如下:...
本文实例展示了devexpress实现treelist父子节点checkstate状态同步的方法,在项目开发中有一定的应用价值,具体实现方法如下:
主要功能代码如下:
/// <summary> ///同步父子节点勾选状态 ///说明 ///在afterchecknode事件中使用代码 ///eg:e.node.syncnodecheckstate(e.node.checkstate); /// </summary> /// <param name="node">需要同步的节点</param> /// <param name="check">节点当前勾选状态</param> public static void syncnodecheckstate(this treelistnode node, checkstate check) { syncnodecheckstate_child(node, check); syncnodecheckstate_parent(node, check); } private static void syncnodecheckstate_child(treelistnode node, checkstate check) { if (node != null) { node.downrecursivenode(n => n.checkstate = check); } } private static void syncnodecheckstate_parent(treelistnode node, checkstate check) { if (node.parentnode != null) { bool _cked = false; checkstate _ckstate; foreach (treelistnode cn in node.parentnode.nodes) { _ckstate = cn.checkstate; if (check != _ckstate) { _cked = !_cked; break; } } node.parentnode.checkstate = _cked ? checkstate.indeterminate : check; syncnodecheckstate_parent(node.parentnode, check); } } /// <summary> /// 向下递归treelistnode节点 /// </summary> /// <param name="node">需要向下递归的节点</param> /// <param name="conditionhanlder">委托</param> public static void downrecursivenode(this treelistnode node, action<treelistnode> conditionhanlder) { foreach (treelistnode _childnode in node.nodes) { conditionhanlder(_childnode); downrecursivenode(_childnode, conditionhanlder); } }
代码运行效果如下图所示:
上一篇: 编译器cc的使用