1  /// <summary>
  2         /// 選擇的節點
  3         /// 塗聚文 20121116
  4         /// 捷為工作室
  5         ///
  6         /// </summary>
  7         /// <param name="sender"></param>
  8         /// <param name="e"></param>
  9         private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
 10         {
 11  #region  4
 12
 13             if (e.Action != TreeViewAction.Unknown)
 14             {
 15
 16                 //Event call by mouse or key-press
 17
 18                 SetNodeCheckStatus(e.Node, e.Node.Checked);
 19
 20             }
 21             #endregion
 22
 23
 24         }
 25         /// <summary>
 26         /// 選擇的節點
 27         /// </summary>
 28         /// <param name="tn"></param>
 29         /// <param name="Checked"></param>
 30         private void SetNodeCheckStatus(TreeNode tn, bool Checked)
 31         {
 32
 33             if (tn == null) return;
 34
 35             // Check children nodes
 36
 37             foreach (TreeNode tnChild in tn.Nodes)
 38             {
 39
 40                 tnChild.Checked = Checked;
 41
 42                 SetNodeCheckStatus(tnChild, Checked);
 43
 44             }
 45
 46             // Set parent check status
 47
 48             TreeNode tnParent = tn;
 49
 50             int nNodeCount = 0;
 51
 52             while (tnParent.Parent != null)
 53             {
 54
 55                 tnParent = (TreeNode)(tnParent.Parent);
 56
 57                 nNodeCount = 0;
 58
 59                 foreach (TreeNode tnTemp in tnParent.Nodes)
 60
 61                     if (tnTemp.Checked == Checked)
 62
 63                         nNodeCount++;
 64
 65                 if (nNodeCount == tnParent.Nodes.Count)
 66
 67                     tnParent.Checked = Checked;
 68
 69                 else
 70
 71                     tnParent.Checked = false;
 72
 73             }
 74
 75         }
 76
 77
 78         #region  選擇的節點
 79         /// <summary>
 80         /// http://www.codeproject.com/Questions/196856/C-NET-Treeview-Node-Checked
 81         /// http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aftercheck.aspx
 82         /// </summary>
 83         /// <param name="treeNode"></param>
 84         /// <param name="nodeChecked"></param>
 85         public void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
 86         {
 87             foreach (TreeNode node in treeNode.Nodes)
 88             {
 89                 node.Checked = nodeChecked;
 90                 if (node.Nodes.Count > 0)
 91                 {
 92                     this.CheckAllChildNodes(node, nodeChecked);
 93                 }
 94             }
 95         }
 96         #endregion
 97         /// <summary>
 98         /// 顯示選擇的節點
 99         /// </summary>
100         /// <param name="sender"></param>
101         /// <param name="e"></param>
102         private void button1_Click(object sender, EventArgs e)
103         {
104
105             DataTable dt = new DataTable();
106             dt.Columns.Add("Uid", typeof(Guid));
107             dt.Columns.Add("ID", typeof(int));
108             dt.Columns.Add("Name", typeof(string));
109             dt.Columns.Add("ParentID", typeof(int));
110
111             List<TreeNode> selectedNodes = new List<TreeNode>();
112             GetSelectedTreeNode(treeView1.Nodes, selectedNodes);
113             int i = 0;
114             foreach (TreeNode node in selectedNodes)
115             {
116                  if (!string.IsNullOrEmpty(node.ToolTipText))
117                 {
118                     dt.Rows.Add(new Guid(node.ToolTipText), node.Name, node.Text,node.Parent.Name);
119                 }
120                 i++;
121             }
122
123
124             dataGridView1.DataSource = dt;
125
126
127
128
129
130         }
131         /// <summary>
132         /// 選擇的節點的值
133         /// </summary>
134         /// <param name="nodes"></param>
135         /// <param name="selectedNodes"></param>
136         void GetSelectedTreeNode(TreeNodeCollection nodes, List<TreeNode> selectedNodes)
137         {
138             foreach (TreeNode node in nodes)
139             {
140                 if (node.Checked)
141                 {
142                     selectedNodes.Add(node);
143                 }
144                 GetSelectedTreeNode(node.Nodes, selectedNodes);
145             }
146         }

转载于:https://www.cnblogs.com/geovindu/archive/2012/11/16/2773713.html

Csharp: Treeview check list value相关推荐

  1. Unity 引擎UGUI之自定义树形菜单(TreeView)

    先上几张效果图:          如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三 ...

  2. winformC# TreeView 点击父节点,子节点全选,

    private bool nextCheck(TreeNode n) //判断同级的节点是否全选{foreach (TreeNode tn in n.Parent.Nodes){if (tn.Chec ...

  3. WPF中TreeView.BringIntoView方法的替代方案

    WPF中TreeView.BringIntoView方法的替代方案 周银辉 WPF中TreeView.BringIntoView()方法并不是那么地好用,不少时候会没有效果,这里有一个替代方案,调用S ...

  4. TreeView 小技巧

    1.在把treeview的check事件给封了之后,在双击的情况下仍然会选中.这个要通过处理消息来解决. 解决: 在调用的时候将这个事件给过滤掉 if (e.Node.ForeColor == Col ...

  5. TreeView的checked事件

    今天下午花了两个小时写的,感觉很不错!         /// <summary>         /// TreeView checked事件         /// </summ ...

  6. 在WPF TreeView中使用复选框

    目录 介绍 背景 细节决定成败 功能要求 将Smarts放入ViewModel 树视图配置 将TreeViewItem变成ToggleButton Aero主题中的复选框错误 介绍 本文回顾了一个WP ...

  7. 【转】Asp.Net TreeView with CheckBox

    1  选择了父节点,则它的所有子节点都选中 2 只要有一个子节点选中, 其父节点就选中 <script language="javascript" type="te ...

  8. TreeView相关

    1.下载地址 http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/d ...

  9. [ATL/WTL]_[初级]_[自定义多列TreeView]

    场景 在开发 Win32,WTL,MFC 程序时,经常会用到 ListView 这个表格控件,ListView 的数据是按照行来显示的,行与行之间没有并没有什么关系.但是如果行之间有父子关系,比如像树 ...

最新文章

  1. 安装jupyter后,使用时显示找不到命令(command not found)
  2. Python 第二章-列表和元组
  3. android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
  4. python图形设置_python学习笔记——基本图形绘制
  5. soc 设计soc设计 uml实务手册_采用 USB4 技术升级 SoC 设计
  6. eclipse发布rest_在Eclipse中高效运行HTTP / REST集成测试
  7. flexible.js淘宝移动端rem自适应用法
  8. Java实现分类文件拷贝2
  9. Web Audio介绍
  10. 计算机操作系统汤小丹版课后答案
  11. 深入解析互联网协议的原理
  12. intel ax200ngw刷killer 1650x教程
  13. Nebula Graph - 全文索引
  14. SAS用proc means和proc univariate求数据的样本均值、中位数、四分位数、样本方差、极差、变异系数、二阶、三阶和四阶中心矩、偏度、峰度、标准差和对数据进行正态性检验
  15. SLAM之回环检测与优化
  16. 群晖Docker部署Microsoft SQL Server 2019
  17. 内存地址中的16进制最小单位是1bit,1Byte?
  18. 前同事被裁员,股票清零!
  19. 转载 锁机制与原子操作 第四篇
  20. Android使用的MQTT客户端

热门文章

  1. SAP UI5:如何处理resource not found for the segment XXXXX error message
  2. SAP系统里的订单,可以随便删除么?
  3. 如何找到SAP CRM One Order节点ID对应的描述信息(名称)
  4. 推荐一个高质量的git命名查询和学习的github仓库git-recipes
  5. springmvc dao怎么可以不写实现类_SpringMVC(一)细聊ContextLoaderListener 是怎么被加载的...
  6. 给一个不多于5位的正整数 要求_java练习题 打卡第5天
  7. java圆柱的底面积体积,计算圆柱的底面积和体积
  8. mysql spj_解决Electron启动出现短暂的白屏 - SegmentFault 思否
  9. python 二次平滑_时序分析 指数平滑
  10. java序列化_技术干货 | JAVA反序列化漏洞