首页 > 其他分享 >.net自带的树控件TreeView用法

.net自带的树控件TreeView用法

时间:2023-12-26 12:13:38浏览次数:26  
标签:控件 TreeNode System using treeNode net TreeView 节点

原文链接:https://blog.csdn.net/wenchm/article/details/133276828

https://blog.csdn.net/xiaogongzhu001/article/details/131100371

        TreeView控件(树控件)可以为用户显示节点层次结构,每个节点又可以包含子节点,包含子节点的节点叫父节点。就像在Windows操作系统的Windows资源管理器功能的左窗口中显示文件和文件夹一样。

1、在窗体上放置 TreeView 控件:
在 Visual Studio 的窗体设计器中,从工具箱中拖动并放置一个 TreeView 控件到你的窗体上。

2、添加树节点:

使用 TreeView 控件的 Nodes 属性来添加和管理树节点。
使用 TreeView.Nodes.Add 方法添加根节点。
使用 TreeNode.Nodes.Add 方法添加子节点。
使用 TreeNode.Text 属性设置节点显示的文本。
3、处理 TreeView 的事件:

AfterSelect:当选择了一个节点后触发的事件。你可以通过订阅该事件,在节点选择变化时执行特定的操作。
4、修改节点样式:

使用 TreeNode.ForeColor 属性设置节点文本的前景色。
使用 TreeNode.BackColor 属性设置节点背景色。
使用 TreeNode.NodeFont 属性设置节点文本的字体样式。

一、添加和删除树节点 
1.添加节点
        使用TreeView控件Nodes属性的Add()方法,可以向控件中添加节点。

public virtual int Add(TreeNode node)
☑ node:要添加到集合中的TreeNode。
☑ 返回值:添加到树节点集合中的TreeNode的从零开始的索引值。
2.移除节点
        使用TreeView控件Nodes属性的Remove()方法可以从树节点集合中移除指定的树节点。

public void Remove (TreeNode node)
node:要移除的TreeNode。
二、获取树控件中选中的节点
        可以在控件的AfterSelect事件中,使用EventArgs对象返回对已单击节点对象的引用。通过检查TreeViewEventArgs类(它包含与事件有关的数据),确定单击了哪个节点。

        在BeforeCheck(在选中树节点复选框前发生)或AfterCheck(在选中树节点复选框后发生)事件中尽可能不要使用TreeNode.Checked属性。

1.源码

//Form1.cs
//AfterSelect事件使用EventArgs对象返回对已单击节点对象的引用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _11
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
//初始化Form1
label1.Visible = false;

//创建父节点
TreeNode treeNode = treeView1.Nodes.Add("银行");

//创建子节点
TreeNode treeNode_1 = new TreeNode("徽商银行");
TreeNode treeNode_2 = new TreeNode("华夏银行");
TreeNode treeNode_3 = new TreeNode("浙商银行");

//给父节点添加子节点
treeNode.Nodes.Add(treeNode_1);
treeNode.Nodes.Add(treeNode_2);
treeNode.Nodes.Add(treeNode_3);
}

//AfterSelect事件使用EventArgs对象返回对已单击节点对象的引用
private void TreeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
label1.Visible = true;
label1.Text = "选中的节点是:" + e.Node.Text;
}
}
}

2.生成效果
 

 

 

三、为树控件中的节点设置图标
        TreeView控件可在每个节点旁显示图标。图标紧挨着节点文本的左侧。若要显示这些图标,必须使树视图与ImageList控件相关联。

        设置TreeView控件的ImageList属性为想要使用的现有ImageList控件。这些属性可在设计器中使用“属性”窗口进行手动设置,也可在代码中编程设置。

treeView1.ImageList = imageList1;
        设置节点的ImageIndex和SelectedImageIndex属性,ImageIndex属性确定正常和展开状态下的节点显示的图像,SelectedImageIndex属性确定选定状态下的节点显示的图像。

1.源码
//Form1.cs
//为树控件中的节点设置图标
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _12
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
treeView1.Dock = DockStyle.Fill;

//创建父节点
TreeNode treeNode = treeView1.Nodes.Add("组织结构");

//创建子节点
TreeNode treeNode_1 = new TreeNode("C#部门");
TreeNode treeNode_2 = new TreeNode("C++部门");
TreeNode treeNode_3 = new TreeNode("VB部门");

//给父节点添加子节点
treeNode.Nodes.Add(treeNode_1);
treeNode.Nodes.Add(treeNode_2);
treeNode.Nodes.Add(treeNode_3);

//给imagelist1添加图片
imageList1.Images.Add(Image.FromFile("1.png"));
imageList1.Images.Add(Image.FromFile("2.png"));

//treeView1和imageList1建立关联
treeView1.ImageList = imageList1;
imageList1.ImageSize = new Size(16, 16);

//默认显示图标ID=0,鼠标选中时显示图标ID=1
treeView1.ImageIndex = 0;
treeView1.SelectedImageIndex = 1;
}
}
}

2.生成效果

标签:控件,TreeNode,System,using,treeNode,net,TreeView,节点
From: https://www.cnblogs.com/Dongmy/p/17927837.html

相关文章

  • C# WinForm控件之advTree
    原文链接:https://www.cnblogs.com/SoftWareIe/p/8757270.html0.属性和方法//属性方法advTree1.DragDropEnabled=!advTree1.DragDropEnabled;//控制是否可以拖动节点advTree1.MultiSelect=!advTree1.MultiSelect;//控制节点是否可以多选advTree1.ExpandButtonType=Dev......
  • 一个功能更强大,性能更高的树控件DevComponents.AdvTree.AdvTree(几种树形控件汇总)
    原文链接:https://www.cnblogs.com/a7373773/archive/2009/07/27/1532236.html一直在用DevComponents.DotNetBar2 控件近来探索Add()和AddRange()的性能问题。一样用极为不专业不科学的方法,比较DevComponents.AdvTree.AdvTree的Add()和AddRange()的性能 1private void butt......
  • 界面控件DevExpress v23.2全新发布 - 全新升级的UI本地化API
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影响力......
  • .Net 利用Aspose.Words在上传word时将.doc转为.docx
    1、引用包Aspose.Words2、接口中使用:ListformFiles=new();foreach(IFormFileformFileinformCollection.Files){if(formFile.ContentType=="application/msword"){Streamfs=formFile.OpenReadStream();vardoc=newAspose.Words.Document(fs);Stream......
  • 关于NPOI word 异常解决NPOI.OpenXml4Net.Exceptions.OpenXML4NetRuntimeException:“
    NPOI.OpenXml4Net.Exceptions.OpenXML4NetRuntimeException:“Failtosave:anerroroccurswhilesavingthepackage:Mustsupportwriting源代码stringfileContent=File.ReadAllText(filePath,Encoding.Default);Dictionary<string,string>dic=......
  • C#版本与.NET版本对应关系以及各版本的特性
    C#版本与.NET版本对应关系以及各版本的特性 C#版本.NET版本发布日期特性C#1.0.NETFramework1.02002-02-13委托、事件C#1.1.NETFramework1.12003-04-24APM(异步编程模型)C#2.0.NETFramework2.02005-11-07泛型、匿名方法、迭代器、可空类型C#......
  • 看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
    前言缓存是提升程序性能必不可少的方法,Asp.netcore支持多级缓存配置,主要有客户端缓存、服务器端缓存,内存缓存和分布式缓存等。其中客户端缓和服务器端缓存在使用上都有比较大的限制,而内存缓和分布式缓存则比较灵活。分布式缓存是一种用于存储和管理数据的技术,它将数据存储在......
  • jmeter 压力机端口不够用Response code:Non HTTP response code: java.net.NoRouteToH
    四  压测机异常,修改配置后重试Responsecode:NonHTTPresponsecode:java.net.NoRouteToHostException原因:Jmeter发压机的端口不够用解决办法:1.netstat|grepTIME_WAIT|wc-l查看目前处在TIME_WAIT状态的值大不大2.检查系统sysctl中配置项:(/etc/sysctl.conf)net.ipv4.t......
  • 【.NET】控制台应用程序的各种交互玩法
    【.NET】控制台应用程序的各种交互玩法 老周是一个不喜欢做界面的码农,所以很多时候能用控制台交互就用控制台交互,既方便又占资源少。有大伙伴可能会说,控制台全靠打字,不好交互。那不一定的,像一些选项类的交互,可以用键盘按键(如方向键),可比用鼠标快得多。当然了,要是要触控的话,是......
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-5】 - 配置管理-Mvc【Plugin-Admin 后
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-4】-配置管理-Mvc【Plugin-CORS跨域】本篇继续介绍下一个内容:系统配置节点:Mvc- Plugin- Admin 后台界面:配置界面如下: 配置说明如下:1、Admin.IsEnable:配置当前后台插件是否可用这是个很危险的开关:如果......