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

    c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧

    C# 2009-06-25 21:51:07 阅读56 评论0 字号:

     

     

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

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

    如图所示:

    c,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧  - 老火靓汤 - 靓汤、文洁和豆丁的家

    c,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧  - 老火靓汤 - 靓汤、文洁和豆丁的家

    代码如下:

    c,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧  - 老火靓汤 - 靓汤、文洁和豆丁的家c,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧  - 老火靓汤 - 靓汤、文洁和豆丁的家Code

    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);

                }

            }

        }

    }

  • 相关阅读:
    Git 分支创建,合并, 分支切换, 分支拉取,提交
    Win7 Nodejs 安装
    .ssh github
    xxxx.IronManager was loaded by com.taobao.pandora.boot.loader.XxxxClassLoader@xxx,it should be loaded by Pandora Container...与摒弃引进别的项目的一些冲突包
    推荐一波微软家的浏览器:EDGE
    谷歌浏览器新功能 Copy Declaration
    微信支付回调数据接收不完整解决方案
    开源物联网框架EasyIot(适用于快递柜&售货机)
    开源物联网框架EasyIot场景落地(适用于快递柜、储物柜)
    海康摄像头音频方案(播放音频文件+语音对讲+语音转发)支持window/Linuxjava版本
  • 原文地址:https://www.cnblogs.com/hdl217/p/1776772.html
Copyright © 2011-2022 走看看