Winform TreeView 节点CheckBox选中,取消
2011-02-24 13:56
537 查看
先看一下效果图
注意一定要在treeView1_MouseClick事件中调用方法,不要在treeView1_AfterCheck中调用,
否则会引起递归错误。
private void treeView1_MouseClick(object sender, MouseEventArgs e) { TreeNode node = treeView1.GetNodeAt(new Point(e.X, e.Y)); if (node != null) { ChangeChild(node, node.Checked);//影响子节点 ChangeParent(node);//影响父节点 } } //递归子节点跟随其全选或全不选 private void ChangeChild(TreeNode node, bool state) { node.Checked = state; foreach (TreeNode tn in node.Nodes) ChangeChild(tn, state); } //递归父节点跟随其全选或全不选 private void ChangeParent(TreeNode node) { if (node.Parent != null) { //兄弟节点被选中的个数 int brotherNodeCheckedCount = 0; //遍历该节点的兄弟节点 foreach (TreeNode tn in node.Parent.Nodes) { if (tn.Checked == true) brotherNodeCheckedCount++; } //兄弟节点全没选,其父节点也不选 if (brotherNodeCheckedCount == 0) { node.Parent.Checked = false; ChangeParent(node.Parent); } //兄弟节点只要有一个被选,其父节点也被选 if (brotherNodeCheckedCount >= 1) { node.Parent.Checked = true; ChangeParent(node.Parent); } } }
注意一定要在treeView1_MouseClick事件中调用方法,不要在treeView1_AfterCheck中调用,
否则会引起递归错误。
相关文章推荐
- 如何让treeview的所有节点前面的checkbox全部取消选中?
- 在Winform中的TreeView控件,实现选中/取消选中父节点则自动选择/取消选中对应子节点
- c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
- c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
- c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
- c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
- c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
- 实现当TreeView中父节点的CheckBox的点选状态改变时,回发服务器端,并且选中父节点,所有子节点全选中
- C# winform treeview node添加右键菜单并选中节点
- 关于Winform下,获取Treeview中CheckBox选中项的“.NET研究”技巧
- C# winform treeview node添加右键菜单并选中节点
- winform TreeView节点中的CheckBox 禁用
- treeview(winform)里如何用命令指定选中某一个节点,并引发afterselect事件?
- 关于Winform下,获取Treeview中CheckBox选中项的技巧
- C# WinForm TreeView改变选中节点颜色,失去焦点时选中节点仍突显。
- C# winform TreeView 中 checkbox 如果上级选中 下级则自动选中
- 在.Net Framework1.1的环境下,调用TreeView控件,生成树图,点选父节点,则所有的子结点也选中,取消选中的父节点下的子结点,则父节点也取消选中状态。
- C# WinForm TreeView改变选中节点颜色,失去焦点时选中节点仍突显。
- 获取Treeview中CheckBox选中项的技巧(winform)
- Jquery操作TreeView 父节点checkbox选中,子节点checkbox也选中