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 }