TreeListView \ TreeGridView 简单使用介绍 您所在的位置:网站首页 序号ll TreeListView \ TreeGridView 简单使用介绍

TreeListView \ TreeGridView 简单使用介绍

2023-07-16 16:23| 来源: 网络整理| 查看: 265

TreeListView\TreeGridView 资源使用 一、TreeListView二、使用步骤1.引入库2.工具箱添加控件 三、具体功能项1.属性页2.添加图标集3.实际使用4.代码及其显示

一、TreeListView TreeListView是一款较为实用的插件,兼顾了Tree View和DataGridView两种控件的优点,可以做到表格显示与树形结构。还可以按需求改变,非常方便。 二、使用步骤 1.引入库 使用之前需要向项目中添加两个dll库,这样才能够正常使用其功能,链接如下,需要的可以下载使用:

在这里插入图片描述 网盘链接: https://pan.baidu.com/s/1u9UWsxNTyNlCB1O9Xcl80g 提取码:yye5

2.工具箱添加控件 右键工具箱------选择项----浏览---找到刚刚下载好的DLL文件,选择System.Windows.Forms.TreeListView.dll,添加到工具箱即可.拖到窗体就可以使用.

在这里插入图片描述

三、具体功能项 1.属性页

在这部分可以手动增添项或者列,根据需求可以直接添加: 在这里插入图片描述 是否显示节点前加号或者减号: 在这里插入图片描述 是否添加网格线: 在这里插入图片描述 添加图标文件: 在这里插入图片描述

剩余属性为较为常见,不一一解释了,只有这三个较为重要,图标部分后面会讲到.

2.添加图标集

添加imagelist控件: 在这里插入图片描述 绑定到TreeListView控件上:(上文提到过的属性页) 在这里插入图片描述 点选控件设置图标集: 在这里插入图片描述

3.实际使用

添加XML文件(根据个人喜好方式添加,本文示例用较为粗糙)

string path = @"路径"; XDocument xDoc = XDocument.Load(xml);

实例TreeListView,根节点属性取值,也可以直接使用节点名

TreeListViewItem item = new TreeListViewItem(); string title = xDoc.Root.Attribute("Text")?.Value ?? xDoc.Root.Name.LocalName; item.ImageIndex = 0;

简单粗暴直接选择图标索引,按照添加时的索引值添加就完了

item.ImageIndex = 0;

可以按照需求直接找到节点,并按照自己的需要使用节点属性,SubItems为次行显示,item为主显示节点行

if(node.Name.LocalName.Trim() == "DDD") { item.Text = "DDD: Size = "+ node.Attribute("Size")?.Value; item.SubItems.Add(node.Attribute("Value")?.Value); }

或者这样选择添加,为需要特殊处理的节点添加次行显示值

switch (title) { case "描述": item.SubItems.Add(node.Attribute("Count")?.Value); break; case "描述1": item.SubItems.Add(node.Attribute("Size")?.Value); break; case "描述2": item.SubItems.Add(node.Attribute("Optional")?.Value); break; case "描述3": item.SubItems.Add(node.Attribute("Optional")?.Value); break; case "描述4": item.SubItems.Add(node.Attribute("Optional")?.Value); break; default: break; }

将节点添加到节点集合中

items.Add(item);

展开前节点图标设置,可以绑定为控件事件

private void treeListView1_BeforeExpand(object sender, TreeListViewCancelEventArgs e) { if (e.Item.ImageIndex == 0) e.Item.ImageIndex = 1; }

收缩前节点图标设置,可以绑定为控件事件

private void treeListView1_BeforeCollapse(object sender, TreeListViewCancelEventArgs e) { if (e.Item.ImageIndex == 1) e.Item.ImageIndex = 0; } 4.代码及其显示

这段代码主要为Demo用,很多地方写的不好,大家根据自己实际需求更改即可,自由度超高,只要有比较好的想法几乎都可以实现,非常人性化

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; using System.Xml; using System.Xml.Linq; namespace Treelistview { public partial class Form1 : Form { public Form1() { InitializeComponent(); LoadXmlTree(path); } string path = @"此处添加路径"; public void LoadXmlTree(string xml) { XDocument xDoc = XDocument.Load(xml); TreeListViewItem item = new TreeListViewItem(); string title = xDoc.Root.Attribute("Text")?.Value ?? xDoc.Root.Name.LocalName; item.ImageIndex = 0; item.Text = title; BuildTree(xDoc.Root, item.Items); treeListView1.Items.Add(item); treeListView1.ExpandAll(); } public void BuildTree(XElement element, TreeListViewItemCollection items) { foreach (XElement node in element.Nodes()) { TreeListViewItem item = new TreeListViewItem(); string title = (string)node.Attribute("Text"); item.Text = title; item.ImageIndex = 0; if(node.Name.LocalName.Trim() == "DDD") { item.Text = "DDD: Size = "+ node.Attribute("Size")?.Value; item.SubItems.Add(node.Attribute("Value")?.Value); } switch (title) { case "描述": item.SubItems.Add(node.Attribute("Count")?.Value); break; case "描述1": item.SubItems.Add(node.Attribute("Size")?.Value); break; case "描述2": item.SubItems.Add(node.Attribute("Optional")?.Value); break; case "描述3": item.SubItems.Add(node.Attribute("Optional")?.Value); break; case "描述4": item.SubItems.Add(node.Attribute("Optional")?.Value); break; default: break; } item.SubItems.Add(node.Attribute("Value")?.Value); if (node.HasElements) { BuildTree(node, item.Items); } items.Add(item); } } private void treeListView1_BeforeExpand(object sender, TreeListViewCancelEventArgs e) { if (e.Item.ImageIndex == 0) e.Item.ImageIndex = 1; } private void treeListView1_BeforeCollapse(object sender, TreeListViewCancelEventArgs e) { if (e.Item.ImageIndex == 1) e.Item.ImageIndex = 0; } } }

运行截图:(Demo用例较为简陋,没有添加数据) 在这里插入图片描述 这款插件功能性很强,我也在摸索使用,有不对的地方希望大家指正,很好用的插件,推荐大家使用,同时我也上传了这个Demo,大家如果感兴趣可以下载下来看一看



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有