http://bbs.bccn.net/thread-197567-1-1.html 

/// <summary>
        /// 已选中或取消选中树节点上的复选框时
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void depDevTreeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            TreeNode nodeEx = (TreeNode)e.Node;
            if (nodeEx == null) return;

            if (e.Action != TreeViewAction.Unknown)
            {
                SetNodeCheckStatus(nodeEx, nodeEx.Checked);
            }
        }

	/// <summary>
        /// 设置上下级节点的状态
        /// </summary>
        /// <param name="tn">当前点击的节点</param>
        /// <param name="nodeExChecked">选中或取消的状态(true/false)</param>
        private void SetNodeCheckStatus(TreeNode tn, bool nodeExChecked)
        {
            if (tn == null) return;

            // Check children nodes

            foreach (TreeNode tnChild in tn.Nodes)
            {
                tnChild.Checked = nodeExChecked;

                SetNodeCheckStatus(tnChild, nodeExChecked);

            }

            // 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 == nodeExChecked)

                        nNodeCount++;

                if (nNodeCount == tnParent.Nodes.Count)

                    tnParent.Checked = nodeExChecked;

                else

                    tnParent.Checked = false;

            }
        }
 public string checknode = "";
         /// <summary>
        /// 获取所有选中的设备/通道值
        /// </summary>
        /// <param name="treeNodeCollection">节点对象集合</param>
        /// <param name="strAllCheckedDeviceOrChannel">任务详细(对应需检测的设备/通道)</param>
        private void GetAllCheckedDeviceOrChannel(TreeNodeCollection treeNodeCollection)
        {
            foreach (TreeNode tn in treeNodeCollection)
            {

                      if (tn.Checked == true) //通道
                        {
                            checknode += tn.Tag  + ",";
                        }

                if (tn.Nodes.Count > 0)
                {
                    //当存在子节点时,递归调用获取
                    GetAllCheckedDeviceOrChannel(tn.Nodes);
                }
            }
        }

  

==========2014-04-24=========winform树控件勾选方法 和获取所有选中的的更多相关文章

  1. 陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column

    背景 最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~ 项目之前使用的是.net/winform.今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆 ...

  2. Qt实现表格树控件-自绘树节点虚线

    目录 一.开心一刻 二.自绘树节点? 三.效果展示 四.实现思路 1.可扩展接口 2.函数重写 3.同步左侧表头 五.相关文章 原文链接:Qt实现表格树控件-自绘树节点虚线 一.开心一刻 一程序员第一 ...

  3. PyQt5复杂控件(树控件、选项卡控件(滚动条控件、多文档控件、停靠控件)

    1.树控件的基本使用方法QTreeWidget'''QTreeWidget树控件的使用方法添加图标,添加表格,添加复选框等'''from PyQt5.QtWidgets import *from Py ...

  4. 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  5. 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  6. DevExpress Winform 常用控件

    Ø  前言 DevExpress 控件的功能比较强大,是全球知名控件开发公司,对于开发 B/S 或 C/S 都非常出色,可以实现很炫且功能强大的效果. DevExpress Winform 常用控件是 ...

  7. (转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  8. 在DevExpress程序中使用Winform分页控件直接录入数据并保存

    一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...

  9. Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)

    利用午休时间继续把过去写的一些代码翻出来说一说,文章可能写的比较简略,但是我会努力把核心意思表达清楚,具体代码可直接访问 Github 获取. Github 地址:https://github.com ...

随机推荐

  1. 自省 另外一种python 生成随机在base36 之间的兑换码生成。

    放假无聊,翻看自己博客的时候发现自己前面写的 那个base36兑换码在翻阅的时候 想到一个更简单的办法实现.但是随机上来说可能没有前者那么高 但是觉得也没有多大的问题 发上来 自己再想想 import ...

  2. Java之静态代码块

    有一些情况下,有些代码需要在项目启动的时候就执行,则需要使用静态代码块,这种代码是主动执行的.Java中的静态代码块是在虚拟机加载类的时候,就执行的,而且只执行一次.如果static代码块有多个,JV ...

  3. POJ3273-Monthly Expense-二分答案

    FJ对以后的每一天会花mi块钱,他想把这些天分成M个时段,然后每个时段的花费和最小. 二分答案,如果加上这天还没有达到mid,就加上它.之后看分成的时段是否大于M #include <cstdi ...

  4. HDU-1686-KMP-水题

    纯KMP #include <cstdio> #include <algorithm> #include <cstring> #include <ctype. ...

  5. C# 事件 订阅与发布

    两种方式: 一: //服务器 public class Server { //服务器发布的事件 public event Action<string> MyEvent; public vo ...

  6. day27 多继承 super 详细用法

    # 没有使用super的时候的多继承,如果父类的名字变了.或者有什么更改,需要全部都一起改 class FooParent: def bar(self, message): print(message ...

  7. HNOI2017单旋

    单旋 这道题做法贼多,LCT,splay,线段树什么的貌似都行. 像我这种渣渣只会线段树了(高级数据结构学了也不会用). 首先离线所有操作,因为不会有两个点值重复,所以直接离散. 一颗线段树来维护所有 ...

  8. 牛客练习赛 小D的Lemon 解题报告

    小D的Lemon 题意 已知 \[ g(x)=\left\{\begin{matrix} 1&,x=1\\ \sum_{i=1}^qk_i&,otherwise \end{matrix ...

  9. rsync同步官方zabbix仓库搭建本地yum源

    1.同步资源 # rsync -vrt rsync://repo.zabbix.com/mirror/zabbix/3.4/rhel/7/x86_64/ /home/mirrors/zabbix/3. ...

  10. 2019.3.28&2019.3.30考试

    2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...