打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用TreeView中CheckBox
项目设计中要使用TreeView中CheckBox(在TreeView的属性中的CheckBoxes设为ture)。想达到一个这样的效果:

1、选中一个节点,则子节点的状态为当前节点的状态并设置展开或折叠。如:本来默认全部是折叠的,当选择Laboratory并使其Checked为true时,其子节点的状态都为true并展开节点,反之。关闭节点。

2、当子节点中至少一个节点状态为false时,其父节点状态仍为true,但是颜色变为灰色。

这个功能发生的事件是TreeView事件中的AfterCheck

代码如下:

  1. private void tvRoleAll_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
  2. {
  3. if (e.Action != TreeViewAction.Unknown)
  4. {
  5. SetNodeCheckStatus(e.Node, e.Node.Checked);
  6. SetNodeStyle(e.Node);
  7. }
  8. }
  9. private void SetNodeCheckStatus(TreeNode tn, bool Checked)
  10. {
  11. if (tn == null) return;
  12. foreach (TreeNode tnChild in tn.Nodes)
  13. {
  14. tnChild.Checked = Checked;
  15. SetNodeCheckStatus(tnChild, Checked);
  16. }
  17. TreeNode tnParent = tn;
  18. }
  19. private void SetNodeStyle(TreeNode Node)
  20. {
  21. int nNodeCount = 0;
  22. if (Node.Nodes.Count != 0)
  23. {
  24. foreach (TreeNode tnTemp in Node.Nodes)
  25. {
  26. if (tnTemp.Checked == true)
  27. nNodeCount++;
  28. }
  29. if (nNodeCount == Node.Nodes.Count)
  30. {
  31. Node.Checked = true;
  32. Node.ExpandAll();
  33. Node.ForeColor = Color.Black;
  34. }
  35. else if (nNodeCount == 0)
  36. {
  37. Node.Checked = false;
  38. Node.Collapse();
  39. Node.ForeColor = Color.Black;
  40. }
  41. else   
  42. {
  43. Node.Checked = true;
  44. Node.ForeColor = Color.Gray;
  45. }
  46. }
  47. //当前节点选择完后,判断父节点的状态,调用此方法递归。
  48. if (Node.Parent != null)
  49. SetNodeStyle(Node.Parent);
  50. }

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
TreeView CheckBox勾选联动
Asp.Net中使用TreeView连接数据库动态加载节点问题
利用DirectoryEntry组件来查看网络,显示域用户的列表, 查询客户端域账户
TreeView 操作应用
遍历TreeView所有节点
ASP.NET TREEVIEW 使用方法(2) - yyf919 - 博客园
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服