Treeview选中/取消选中父节点

时间:2018-04-05 08:57:34

标签: c# winforms treeview

我正在使用parent node控件列出我的所有菜单,以便我可以授予每个用户访问权限。当用户选中一个或多个check = true时,我将如何强制childnodechild nodes

我在检查parent node时使用以下代码检查/取消选中所有private void treeView_AfterCheck(object sender, TreeViewEventArgs e) { if (e.Action != TreeViewAction.Unknown) { if (e.Node.Nodes.Count > 0) { CheckAllChildNodes(e.Node, e.Node.Checked); } } } private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked) { foreach (TreeNode node in treeNode.Nodes) { node.Checked = nodeChecked; if (node.Nodes.Count > 0) { this.CheckAllChildNodes(node, nodeChecked); } } }

import urwid

icon = u"\U0001F600"

top = urwid.Padding(
        urwid.LineBox(
            urwid.Filler(urwid.Text(icon, align="center")
                         )), width=10)

urwid.MainLoop(top).run()

1 个答案:

答案 0 :(得分:0)

TreeNode具有“父”属性,应该可以轻松实现 未经测试的代码,但应该给你一个想法。

private void CheckAllParentNodes(TreeNode treeNode, bool nodeChecked)
{
   TreeNode parentNode = treeNode.Parent;
   while (parentNode != null)
   {
     // check if parent has still checked child nodes
     if (parent.Nodes.Any(n => n.Checked)) return;

     parentNode.Checked = nodeChecked;
     parentNode = parentNode.Parent;
   }
}