在开发的时候经常使用treeview控件来显示组织结构啊,目录结构啊,通常会结合属性checkedboxs,来做选中,取消的操作下面是一个选中,取消的小例子,选中节点的时候,如果节点存在子节点,可以选中全部的子节点;如果取消一个节点的选中状态,当前节点同时又存在父节点的话,就取消父节点的选中状态。

private void trvPost_AfterCheck(object sender, TreeViewEventArgs e)
{
//通过鼠标或者键盘触发事件,防止修改节点的Checked状态时候再次进入
if (e.Action == TreeViewAction.ByMouse || e.Action == TreeViewAction.ByKeyboard)
{
SetChildNodeCheckedState(e.Node, e.Node.Checked);
SetParentNodeCheckedState(e.Node, e.Node.Checked);
}
} //设置子节点状态
public void SetChildNodeCheckedState(TreeNode currNode, bool isCheckedOrNot)
{
if (currNode.Nodes == null) return; //没有子节点返回
foreach (TreeNode tmpNode in currNode.Nodes)
{
tmpNode.Checked = isCheckedOrNot;
SetChildNodeCheckedState(tmpNode, isCheckedOrNot);
}
} //设置父节点状态
public void SetParentNodeCheckedState(TreeNode currNode, bool isCheckedOrNot)
{
if (currNode.Parent == null) return; //没有父节点返回
if (isCheckedOrNot) //如果当前节点被选中,则设置所有父节点都被选中
{
currNode.Parent.Checked = isCheckedOrNot;
SetParentNodeCheckedState(currNode.Parent, isCheckedOrNot);
}
else //如果当前节点没有被选中,则当其父节点的子节点有一个被选中时,父节点被选中,否则父节点不被选中
{
bool checkedFlag = false;
foreach (TreeNode tmpNode in currNode.Parent.Nodes)
{
if (tmpNode.Checked)
{
checkedFlag = true;
break;
}
}
currNode.Parent.Checked = checkedFlag;
SetParentNodeCheckedState(currNode.Parent, checkedFlag);
}
}

Winform TreeView控件技巧的更多相关文章

  1. winform Treeview控件使用

    做角色菜单权限时用到treeview控件做树状显示菜单,简单总结了一下用法: 1.在winform窗体中拖入treeview控件,注意修改属性CheckBoxes属性为true,即在节点旁显示复选框 ...

  2. Winform - TreeView控件,只展开根目录

    TreeNode类型是有Expand和ExpandAll这两个方法.而Treeview是只有ExpandAll的,想要展开根目录下面的节点的话 //只展开根目录 ) ].Expand();

  3. WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色

    本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的 ...

  4. HTTP模拟工具【C#/Winform源码】、Json绑定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool这几个主要开源框架

    HTTP模拟工具 开发语言:C#/Winform开发工具:Visual Studio 2017数据库:   SQLite使用框架:界面-MetroModernUI              Http请 ...

  5. Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼

    Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...

  6. C#Winform中treeView控件使用总结

    1.如何展开结点时改变图标(注意:不是选中时) 要在目录中使用图标首先要加入一个控件ImageList(命名为imageList1),然后可以按图片的index或名称引用图片. 然后需要在TreeVi ...

  7. winform基础控件总结

    转自:http://www.cnblogs.com/top5/archive/2010/04/29/1724039.html 基础 - 常用控件 C# WinForm开发系列 - CheckBox/B ...

  8. C# TreeView 控件的综合使用方法

    1.概述 该篇文章开发使用的语言c#,环境visualstudio2010,sql数据库.主要内容包括: (1)treeView控件添加根节点.子节点的基本方法,节点的删除. (2)把treeView ...

  9. C#编程,TreeView控件的学习

    新建一个WinForm项目之后,在窗体中放入一个treeView控件(treeView1),根据数据库数据填充建立树节点.数据库的结构如下: ID        Title        P_ID a ...

随机推荐

  1. linux tomca几个配置文件及点

    --------------------推荐----配置2---------------------<Connector port="8081"executor=" ...

  2. java.util.Scanner的日常用法

    Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的.查看最新在线文档: public final class Scanner extends Object implements ...

  3. iOS开发——面试笔试精华(一)

    面试笔试精华(一) 1.        #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1>  #imp ...

  4. OAuth 2 Developers Guide--reference

    Introduction This is the user guide for the support for OAuth 2.0. For OAuth 1.0, everything is diff ...

  5. Templates

    Templates Templates are the site's markup, where images and js, css files are located as well as the ...

  6. c++ (P262—P277) STL

    STL的六大组件 容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供.为了访问容器中的数据,可以使用由容器类输出的迭代器: 迭代器(Iterat ...

  7. sed示例

    引用:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html [root@www ~]# sed [-nefr] [动作] 选 ...

  8. DROP--删除表

    DROP TABLE table_name; 说明: 1.必须有表的权限 2.表不能有外键约束

  9. 关于Eclipse的常用快捷键

    最近用到了一些以前开发中没有用到的Eclipse中的快捷键,现在总结如下: Ctrl+Shift+G 全局 工作区中的引用 使用的图解: 在所选定的类上,按下Ctrl+Shift+G在Search的T ...

  10. UVA - 213 Message Decoding (输入字符串并对单个字符进行操作的输入输出)

    POINT: 关于表示一个编码:利用code字符数组表示一个编码字符,其中code[len][val]表示长度为len,二进制值为val的字符: 主程序如下: #include <iostrea ...