C# TreeView CheckBox 级联选择实现 - 代码示例
在C#中,TreeView控件的CheckBox级联选择可以通过递归遍历TreeView节点来实现。以下是一个示例代码:\n\ncsharp\nprivate void CheckChildNodes(TreeNode parentNode, bool isChecked)\n{\n foreach (TreeNode node in parentNode.Nodes)\n {\n node.Checked = isChecked;\n\n // 递归选择子节点\n CheckChildNodes(node, isChecked);\n }\n}\n\nprivate void CheckParentNode(TreeNode node)\n{\n if (node.Parent != null)\n {\n bool isAllSiblingsChecked = true;\n\n // 检查所有兄弟节点是否都被选中\n foreach (TreeNode siblingNode in node.Parent.Nodes)\n {\n if (!siblingNode.Checked)\n {\n isAllSiblingsChecked = false;\n break;\n }\n }\n\n // 如果所有兄弟节点都被选中,则选中父节点\n if (isAllSiblingsChecked)\n {\n node.Parent.Checked = true;\n\n // 递归选择父节点\n CheckParentNode(node.Parent);\n }\n }\n}\n\nprivate void treeView1_AfterCheck(object sender, TreeViewEventArgs e)\n{\n // 取消事件绑定,避免循环调用\n treeView1.AfterCheck -= new TreeViewEventHandler(treeView1_AfterCheck);\n\n // 选择子节点\n CheckChildNodes(e.Node, e.Node.Checked);\n\n // 选择父节点\n CheckParentNode(e.Node);\n\n // 重新绑定事件\n treeView1.AfterCheck += new TreeViewEventHandler(treeView1_AfterCheck);\n}\n\n\n在上面的示例代码中,我们使用了CheckChildNodes方法来递归选择子节点,使用CheckParentNode方法来递归选择父节点。在AfterCheck事件中,我们取消了事件绑定,然后调用了上述两个方法,最后重新绑定事件。这样可以避免循环调用。
原文地址: https://www.cveoy.top/t/topic/p1cn 著作权归作者所有。请勿转载和采集!