C# WinForm TreeView选择父节点子节点全选

 1  //设置标志,防止死循环
 2         bool check = false;
 3         public void TV_AfterCheck(object sender, TreeViewEventArgs e)
 4         {
 5             if (check == false)
 6                 setchild(e.Node);
 7             setparent(e.Node);
 8             check = false;
 9         }
10 
11         //设置子节点状态
12         private void setchild(TreeNode node)
13         {
14             foreach (TreeNode child in node.Nodes)
15             {
16                 child.Checked = node.Checked;
17             }
18             check = true;
19         }
20 
21         //设置父节点状态
22         private void setparent(TreeNode node)
23         {
24             if (node.Parent != null)
25             {
26                 //如果当前节点状态为勾选,则需要所有兄弟节点都勾选才能勾选父节点
27                 if (node.Checked)
28                     foreach (TreeNode brother in node.Parent.Nodes)
29                     {
30                         if (brother.Checked == false)
31                             return;
32                     }
33                 node.Parent.Checked = node.Checked;
34             }
35         }

 

posted @ 2017-12-22 15:27  涂山吕吕  阅读(3406)  评论(0编辑  收藏  举报