zoukankan      html  css  js  c++  java
  • c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧

    在开发的时候经常使用treeview控件来显示组织结构啊,目录结构啊,通常会结合属性checkedboxs,来做选中,取消的操作

    下面是一个选中,取消的小例子,选中节点的时候,如果节点存在子节点,可以选中全部的子节点;如果取消一个节点的选中状态,当前节点同时又存在父节点的话,就取消父节点的选中状态。

    如图所示:
    treeview1.JPG

    treeview2.JPG

    代码如下:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsApplication6
    {
        
    public partial class TreeViewTest : Form
        {
            
    public TreeViewTest()
            {
                InitializeComponent();
            }

            
    private void TreeViewTest_Load(object sender, EventArgs e)
            {
                treeView1.ExpandAll();
            }

            
    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {

                
    if (e.Action == TreeViewAction.ByMouse)
                {
                    textBox1.Text 
    = e.Node.Text;
                    
    if (e.Node.Checked)
                    {
                        
    //取消节点选中状态之后,取消所有父节点的选中状态
                        setChildNodeCheckedState(e.Node, true);
                       
                    }
                    
    else
                    {
                        
    //取消节点选中状态之后,取消所有父节点的选中状态
                        setChildNodeCheckedState(e.Node, false);
                        
    //如果节点存在父节点,取消父节点的选中状态
                        if (e.Node.Parent != null)
                        {
                            setParentNodeCheckedState(e.Node, 
    false);
                        } 
                    }
                }
            }
            
    //取消节点选中状态之后,取消所有父节点的选中状态
            private void setParentNodeCheckedState(TreeNode currNode, bool state)
            {
                TreeNode parentNode 
    = currNode.Parent;
                
                    parentNode.Checked 
    = state;
                    
    if (currNode.Parent.Parent != null)
                    {
                        setParentNodeCheckedState(currNode.Parent, state);
                    }
            }
            
    //选中节点之后,选中节点的所有子节点
            private void setChildNodeCheckedState(TreeNode currNode, bool state)
            {
                TreeNodeCollection nodes
    =currNode.Nodes;
                
    if(nodes.Count>0)
                
    foreach (TreeNode tn in nodes)
                {
                    
                    tn.Checked 
    = state;
                    setChildNodeCheckedState(tn, state);
                }
            }
        }
    }
  • 相关阅读:
    20175314 《Java程序设计》第六周学习总结
    20175314 结队编程项目——四则运算第一周
    20175314 《Java程序设计》迭代和JDB
    20175314 实验一 Java开发环境的熟悉
    20175314 《Java程序设计》第五周学习总结
    20175314 《Java程序设计》第四周学习总结
    20175314 《Java程序设计》第三周学习总结
    20175314 《Java程序设计》第二周学习总结
    20175314 《Java程序设计》第一周学习总结
    多态的成员特点
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/2850638.html
Copyright © 2011-2022 走看看