Csharp: Treeview check list value

简介: /// <summary> /// 選擇的節點 /// 塗聚文 20121116 /// 捷為工作室 /// /// </summary> /// <param name="sender"></param>
/// <summary>
         /// 選擇的節點
         /// 塗聚文 20121116
         /// 捷為工作室
         /// 
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
         {
  #region  4
 
             if (e.Action != TreeViewAction.Unknown)
             {
 
                 //Event call by mouse or key-press
 
                 SetNodeCheckStatus(e.Node, e.Node.Checked);
 
             }
             #endregion 
 
 
         }
         /// <summary>
         /// 選擇的節點
         /// </summary>
         /// <param name="tn"></param>
         /// <param name="Checked"></param>
         private void SetNodeCheckStatus(TreeNode tn, bool Checked)
         {
 
             if (tn == null) return;
 
             // Check children nodes
 
             foreach (TreeNode tnChild in tn.Nodes)
             {
 
                 tnChild.Checked = Checked;
 
                 SetNodeCheckStatus(tnChild, Checked);
 
             }
 
             // Set parent check status
 
             TreeNode tnParent = tn;
 
             int nNodeCount = 0;
 
             while (tnParent.Parent != null)
             {
 
                 tnParent = (TreeNode)(tnParent.Parent);
 
                 nNodeCount = 0;
 
                 foreach (TreeNode tnTemp in tnParent.Nodes)
 
                     if (tnTemp.Checked == Checked)
 
                         nNodeCount++;
 
                 if (nNodeCount == tnParent.Nodes.Count)
 
                     tnParent.Checked = Checked;
 
                 else
 
                     tnParent.Checked = false;
 
             }
 
         }
 
 
         #region  選擇的節點
         /// <summary>
         /// http://www.codeproject.com/Questions/196856/C-NET-Treeview-Node-Checked
         /// http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aftercheck.aspx
         /// </summary>
         /// <param name="treeNode"></param>
         /// <param name="nodeChecked"></param>
         public void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
         {
             foreach (TreeNode node in treeNode.Nodes)
             {
                 node.Checked = nodeChecked;
                 if (node.Nodes.Count > 0)
                 {
                     this.CheckAllChildNodes(node, nodeChecked);
                 }
             }
         }
         #endregion
         /// <summary>
         /// 顯示選擇的節點
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void button1_Click(object sender, EventArgs e)
         {
 
             DataTable dt = new DataTable();
             dt.Columns.Add("Uid", typeof(Guid));
             dt.Columns.Add("ID", typeof(int));
             dt.Columns.Add("Name", typeof(string));
             dt.Columns.Add("ParentID", typeof(int));
 
             List<TreeNode> selectedNodes = new List<TreeNode>();
             GetSelectedTreeNode(treeView1.Nodes, selectedNodes);
             int i = 0;
             foreach (TreeNode node in selectedNodes)
             {
                  if (!string.IsNullOrEmpty(node.ToolTipText))
                 {
                     dt.Rows.Add(new Guid(node.ToolTipText), node.Name, node.Text,node.Parent.Name);
                 }
                 i++;
             }
 
 
             dataGridView1.DataSource = dt;
             
             
 
            
            
         }
         /// <summary>
         /// 選擇的節點的值
         /// </summary>
         /// <param name="nodes"></param>
         /// <param name="selectedNodes"></param>
         void GetSelectedTreeNode(TreeNodeCollection nodes, List<TreeNode> selectedNodes)
         {
             foreach (TreeNode node in nodes)
             {
                 if (node.Checked)
                 {
                     selectedNodes.Add(node);
                 }
                 GetSelectedTreeNode(node.Nodes, selectedNodes);
             }
         }

目录
相关文章
|
SQL Java 数据库连接
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
1599 3
|
6月前
|
JavaScript
Vue报错 Invalid default value for prop “list“: Props with type Object/Array must use a factory
Vue报错 Invalid default value for prop “list“: Props with type Object/Array must use a factory
320 0
|
5月前
|
存储 NoSQL 安全
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
|
6月前
|
Java API
List转Map(id为key,list为value)
List转Map(id为key,list为value)
257 0
|
缓存 监控 Java
游戏服务器开服异常Check List
游戏服务器开服异常Check List
58 0
|
Java 数据格式 Spring
SpringBoot中@Value注解注入List或Map数据格式出现异常
在做一个小demo的时候、做的例子是我想在程序运行时将一些数据放入到配置类中的属性中、我想到可以通过yaml配置的数据映射到实体类中的属性中、我在想通过这种形式能不能映射。
|
安全 Java
Java中找出List集合中属性名为key属性值为value的对象
在日常开发中,我们需要从一个 List 集合中找出其中某一个对象,下面就介绍如何从 List 集合中找出属性名为 key 属性值为 value 的对象
314 0
Java中找出List集合中属性名为key属性值为value的对象
|
安全 Java
Java - 找出 List 集合中属性名为 key 属性值为 value 的对象
Java - 找出 List 集合中属性名为 key 属性值为 value 的对象
590 0
Java - 找出 List 集合中属性名为 key 属性值为 value 的对象
Check List线段树维护偏序三元组
如上的问题是让求出满足三元组(xi,yi),(xj,yj)(xk,yk) 且{ xi < xj < xk yj < yi < yk }的数量 这里的约束条件有两个,可以称作是二维偏序问题 推荐一篇博客:链接 这里面总结了一些经验 关于这个题目,学长的博客链接里面讲到了一些做题的思路: 按照x坐标进行排序,然后对y进行离散化处理(看数据范围就会发现y的数据范围达到了1e9,但是最多只会有2e5个点) 之后,假设当前位置是pos
114 0
成功解决TypeError: Value passed to parameter 'paddings' has DataType float32 not in list of allowed valu
成功解决TypeError: Value passed to parameter 'paddings' has DataType float32 not in list of allowed valu