C#中TreeView实现适合两级节点的选中节点方法
作者:我心依旧 发布时间:2022-10-02 19:12:42
标签:C#,TreeView
本文实例讲述了C#中TreeView实现适合两级节点的选中节点方法。分享给大家供大家参考。具体如下:
class TreeViewChecked
{
bool isfirst = true;
public TreeViewChecked(TreeView treeView)
{
treeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);
treeView.AfterSelect += new TreeViewEventHandler(treeView_AfterSelect);
}
/// <summary>
/// 点击文字,选中checkbox
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void treeView_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Checked)
e.Node.Checked = false;
else
e.Node.Checked = true;
if (isfirst)
{
isfirst = false;
e.Node.TreeView.Nodes[0].Checked = false;
}
}
/// <summary>
/// 选中子节点,勾选父节点,选中父节点,勾选子节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void treeView_AfterCheck(object sender, TreeViewEventArgs e)
{
CheckTreeNode(e.Node);
}
/// <summary>
/// 选中子节点,勾选父节点,选中父节点,勾选子节点
/// </summary>
/// <param name="node"></param>
private void CheckTreeNode(TreeNode node)
{
node.TreeView.AfterCheck -= new TreeViewEventHandler(treeView_AfterCheck);
//如果不等于null,说明选择的是子节点
if (node.Parent != null)
{
TreeNode parent = node.Parent as TreeNode;
//如果该节点是选中的
if (node.Checked)
{
//判断其父节点是否被选中,如果没有被选中则选中它
if (parent.Checked == false)
{
parent.Checked = true;
}
}
else
{
bool ischecked = false;
foreach (TreeNode child in parent.Nodes)
{
if (child.Checked)
{
ischecked = true;
break;
}
}
if (ischecked)
parent.Checked = true;
else
parent.Checked = false;
}
}//如果等于null,说明选择的是根节点
else
{
foreach (TreeNode child in node.Nodes)
{
child.Checked = node.Checked;
}
}
node.TreeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);
}
}
希望本文所述对大家的C#程序设计有所帮助。


猜你喜欢
- 实践过程效果代码public partial class frmSplit : Form{ public frmS
- springboot+spring data jpa实现新增及批量新增spring data jpa (以下简称jpa)。这个orm其实和m
- 在新版的AndroidStudio3.6 中,在项目的包下新建 activity 时,一般会同时生成对应的java和xml文件,例如新建 M
- 前言C++类中有几个特殊的非静态成员函数,当用户未定义这些函数时,编译器将给出默认实现。C++11前有四个特殊函数,C++11引入移动语义特
- 本文实例讲述了Android开发之TabActivity用法。分享给大家供大家参考,具体如下:一.简介TabActivity继承自Activ
- 1) 要及时回收Bitmap的内存Bitmap类有一个方法recycle(),从方法名可以看出意思是回收。这里就有疑问了,Android系统
- 本文实例讲述了WPF中的ListBox实现按块显示元素的方法。分享给大家供大家参考,具体如下:注意:需要设置ListBox的属性 Scrol
- 简介Pyjnius是一个用于访问Java类的Python库。适用场景:极个别的加密算法等内容,用python不方便实现或者实现较耗时,可基于
- 前言在之前学习如何使用MediaPlayer后,了解到Android系统提供开发者播放多媒体全家桶能力,但对于开发者希望DIY自由度更高的播
- Android ListView填充数据的方法因为多人开发,为了是自己开发的模块方便融合到主框架中,同时也为了减小apk的大小,要求尽可能少
- 实现GridView的横向滚动效果如下图:具体实现的代码•1. 主界面布局代码:activity_main.xml<?xml vers
- 准备:(1) IDEA 2021(2)Java 1.8(3)数据库 MySQL 5.7 (SQLyog 或 Navicat)在 MySQL
- 本文实例为大家分享了java音乐播放器的具体代码,供大家参考,具体内容如下这个是源码结构介绍这个是界面,有点简陋,见笑了,但是基本上的东西都
- Java序列化是什么?Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程。反序列化
- 最近的项目中,想做到一种能够吸引眼球的一种角色选择浏览效果Demo源码:点击打开链接最终实现了下按如下图这么一种浏览效果:效果图一效果图二可
- tomcat内存溢出设置JAVA_OPTS答案1设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xm
- 代码如下所示:using System;using System.Collections.Generic;using System.Linq
- 近来复习数据结构,自己动手实现了栈。栈是一种限制插入和删除只能在一个位置上的表。最基本的操作是进栈和出栈,因此,又被叫作“先进后出”表。首先
- resultTyperesultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。如果sq
- 本文实例主要实现了网页照相机程序的功能。C#实现将网页保存成图片格式,简单实现网页拍照,主要是基于ActiveX 组件的网页快照类,Acit