TreeListView \ TreeGridView 简单使用介绍 | 您所在的位置:网站首页 › 序号ll › TreeListView \ TreeGridView 简单使用介绍 |
TreeListView\TreeGridView 资源使用
一、TreeListView二、使用步骤1.引入库2.工具箱添加控件
三、具体功能项1.属性页2.添加图标集3.实际使用4.代码及其显示
一、TreeListView
TreeListView是一款较为实用的插件,兼顾了Tree View和DataGridView两种控件的优点,可以做到表格显示与树形结构。还可以按需求改变,非常方便。
二、使用步骤
1.引入库
使用之前需要向项目中添加两个dll库,这样才能够正常使用其功能,链接如下,需要的可以下载使用:
在这部分可以手动增添项或者列,根据需求可以直接添加: 剩余属性为较为常见,不一一解释了,只有这三个较为重要,图标部分后面会讲到. 2.添加图标集添加imagelist控件: 添加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用例较为简陋,没有添加数据) |
CopyRight 2018-2019 实验室设备网 版权所有 |