treelistview入门使用

2023-05-16

treelistview入门使用

1、创建窗口程序

2、引入库System.Runtime.InteropServices.APIs.dll和System.Runtime.InteropServices.APIs.dll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdc7wuNM-1672901166444)(./png/image-20230105131125478.png)]

3、工具箱添加控件

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jFkWpPyr-1672901166445)(./png/image-20230105132123036.png)]

了解功能和属性

4、添加图标

是否显示节点前加号或者减号:
在这里插入图片描述

是否添加网格线:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGgo8idp-1672901166446)(./png/image-20230105133517004.png)]

添加图标文件:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQ3PtDAX-1672901166446)(./png/image-20230105133534360.png)]

5、添加imagelist并绑定

在这里插入图片描述

6、初始化数据

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 WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += OnLoadHandler1;
        }
        private void OnLoadHandler1(object sender, EventArgs e)
        {
            addColumn();
            initInfo();
        }
        private void addColumn()
        {
            this.treeListView1.Items.Sortable = false;//禁止排序
            treeListView1.Columns.Add("aaa", 250);//直接指定宽度
            treeListView1.Columns.Add("bbb", 50);
            treeListView1.Columns.Add("cccc", 80);

        }
        
        private void initInfo()
        {
            treeListView1.Items.Clear();
            DataTable groupResult = createTestData();
            if (groupResult != null)
            {
                DataRow[] rows = groupResult.Select("pid = '0'");
                foreach (DataRow row in rows)
                {
                    TreeListViewItem firstNode = new TreeListViewItem(row["name"].ToString(), 0);//一级节点
                    firstNode.SubItems.Add(row["V1"].ToString());
                    firstNode.SubItems.Add(row["V2"].ToString());

                    initChile(firstNode, row["id"].ToString(), groupResult);
                    treeListView1.Items.Sortable = false;
                    treeListView1.Items.Add(firstNode);
                }
            }
        }

        private void initChile(TreeListViewItem fatherNode, string id, DataTable groupResult)
        {
            DataRow[] rows = groupResult.Select("pid='" + id + "'");
            if (rows.Length == 0)
            {
                return;
            }
            foreach (DataRow row in rows)
            {
                TreeListViewItem node= new TreeListViewItem(row["name"].ToString(), 0);

                node.SubItems.Add(row["V1"].ToString());
                node.SubItems.Add(row["V2"].ToString());

                initChile(node, row["id"].ToString(), groupResult);
                fatherNode.Items.Sortable = false;
                fatherNode.Items.Add(node);
            }
        }
        
        private DataTable createTestData()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("A"); dt.Columns.Add("id"); dt.Columns.Add("pid"); dt.Columns.Add("name");
            dt.Columns.Add("V1"); dt.Columns.Add("V2");

            var myRow = dt.NewRow();
            myRow["A"] = "0"; myRow["id"] = "01"; myRow["pid"] = "0"; myRow["name"] = "一级"; myRow["V1"] = "";
            myRow["V2"] = ""; 

            var myRow1 = dt.NewRow();
            myRow1["A"] = "0"; myRow1["id"] = "001"; myRow1["pid"] = "01"; myRow1["name"] = "二级"; myRow1["V1"] = "";
            myRow1["V2"] = "";

            var myRow2 = dt.NewRow();
            myRow2["A"] = "0"; myRow2["id"] = "0001"; myRow2["pid"] = "001"; myRow2["name"] = "三级"; myRow2["V1"] = "";
            myRow2["V2"] = ""; 

            var myRow3 = dt.NewRow();
            myRow3["A"] = "0"; myRow3["id"] = "00001"; myRow3["pid"] = "0001"; myRow3["name"] = "四级"; myRow3["V1"] = "八路我";
            myRow3["V2"] = "日本省";

            var myRow4 = dt.NewRow();
            myRow4["A"] = "0"; myRow4["id"] = "00002"; myRow4["pid"] = "0001"; myRow4["name"] = "五级"; myRow4["V1"] = "你奶奶";
            myRow4["V2"] = "小趴菜";
           


            dt.Rows.Add(myRow);
            dt.Rows.Add(myRow1);
            dt.Rows.Add(myRow2);
            dt.Rows.Add(myRow3);
            dt.Rows.Add(myRow4);
            return dt;
        }
    }
}

效果:

dt.Rows.Add(myRow2);
dt.Rows.Add(myRow3);
dt.Rows.Add(myRow4);
return dt;
}
}
}


效果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/9e1a82ba11b641a096c262055f253af1.png)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

treelistview入门使用 的相关文章

  • Pytorch-gpu版安装教程【注意:无需提前安装cuda和cudnn】

    Pytorch gpu版安装教程 注意 xff1a 无需提前安装cuda和cudnn 1 首先确保你已经安装好Anaconda2 查看自己电脑上显卡的信息 xff0c 通过显卡控制面板查看3 如何根据想要的cuda的版本下载相应的显卡驱动程
  • python调用有道翻译API进行翻译

    python调用有道翻译API进行翻译 步骤 python调用有道翻译API进行翻译准备调用API所需的APPID以及秘钥1 有道智云注册账号2 有道智云注册账号3 创建实例 xff0c 绑定应用4 查看官方文档 python实现对有道翻译
  • Linux安装cuda10.2

    Linux安装cuda10 2 安装其他版本的cuda也可以参考以下步骤 A 进入NVIDIA官网下载安装文件 百度搜索cuda 10 2 点开第一个网页 找到对应自己系统版本的安装文件命令 在命令行中执行给出的代码 xff0c 下载安装文
  • Windows 10 安装anaconda

    Windows 10 安装anaconda 1 下载anaconda安装包2 安装Anaconda3 配置Anaconda环境变量4 检验是否安装成功4 anaconda换源5 python换源 1 下载anaconda安装包 网页搜索清华
  • 排序算法-基数排序

    排序算法 基数排序 算法思想 基数排序是采用多关键字排序思想 xff08 即基于关键字各位的大小进行排序地 xff09 xff0c 借助 分配 收集 两种操作对单逻辑关键字进行排序 基数排序又分为最高位优先 MSD 降序 排序和最低位优先
  • No module named ‘cv2‘ 解决方法

    No module named cv2 解决方法 1 安装opencv python 在使用的虚拟环境中 xff0c 输入以下命令 pip span class token function install span opencv pyth
  • AttributeError:module ‘distutils‘ has no attribute ‘version

    AttributeError module distutils has no attribute 39 version 在使用torch utils tensorboard时 xff0c 出现错误 xff1a 出错语句from torch
  • CPU、GPU、NPU的区别

    CPU GPU NPU的区别 CPU CPU xff08 CentralProcessing Unit xff09 中央处理器 xff0c 是一块超大规模的集成电路 xff0c 主要逻辑架构包括控制单元Control xff0c 运算单元A
  • jdk(Linux+Windows)环境变量配置

    Windows jdk环境变量配置 xff1a PATH JAVA HOME bin JAVA HOME jre bin CLASSPATH JAVA HOME lib JAVA HOME lib tools jar JAVA HOME l
  • 并发编程-生产者消费者模式Java代码实现

    并发编程 生产者消费者模式Java代码实现 生产者消费者模式 生产者仅负责产生结果数据 xff0c 不关心数据该如何处理 xff0c 而消费者专心处理结果数据 消息队列是有容量限制的 xff0c 满时不会再加入数据 xff0c 空时不会再消
  • Java自定义线程池详解及代码实现(非直接调用ThreadPoolExecutor)

    JJava自定义线程池详解及代码实现 非直接调用ThreadPoolExecutor JDK中的线程池函数ThreadPoolExecutorJDK中的线程池执行任务时的流程自定义线程池业务分析自定义线程池的代码实现 注释详尽1 定义阻塞队
  • BIO、NIO、IO多路复用(select/poll/epoll)、信号驱动IO、异步IO

    BIO NIO IO多路复用 select poll epoll 信号驱动IO 异步IO Linux用户空间和内核空间阻塞IO xff08 Blocking IO xff09 非阻塞IO xff08 Noblocking IO xff09
  • 离散数学对学计算机有什么用?

    离散数学是计算机专业的一门重要基础课 它所研究的对象是离散数量关系和离散结构数学结构模型 由于数字电子计算机是一个离散结构 xff0c 它只能处理离散的或离散化了的数量关系 xff0c 因此 xff0c 无论计算机科学本身 xff0c 还是
  • VistualBox开机后台启动虚拟机

    有时候我们想学习使用其它的系统时 xff0c 总会面临一个问题 xff0c 装系统 装双系统吧 xff0c 总觉得别扭 xff0c 而且反复切换让人头大 使用虚拟机吧 xff01 每一次都得启动虚拟机然后启动虚拟机中的系统 xff0c 体验
  • ubuntu下循环登录的解决方法

    用老师的电脑跑完程序后出现的情况 xff1a ubuntu下每个的账户输入密码后黑屏一闪后回到登录界面 考虑可能的原因是1 xff0c 磁盘满了 xff0c 无法启动2 xff0c 非法关机 进行尝试 xff1a ctrl 43 alt 4
  • Python,批量删除txt文本指定行

    本文解决问题 xff1a 批量删除多行txt文本中的内容 思路 xff1a 1 找出需要删除行的 id xff08 就是需要删除那些行 xff0c 把这是第几行给记录下来 xff09 2 将原文本内容不需要删除的行 赋予到 新的列表 xff
  • PreparedStatement的解释和优势,PreparedStatement和Statement的比较

    PreparedStatement的解释 xff1a PreparedStatement是java sql包下的一个接口 xff0c 用来执行sql语句查询 xff0c 通过调用conn prepareStatement sql 方法可以获
  • linux删除桌面

    关闭开机的时候启动动画 xff1a 在 boot grub grub cfg 中 xff1a 将 rhgb quiet 改为 quiet 如果没有图形化界面 xff0c 可以使用下面的方法开启网络 xff1a cd etc sysconfi
  • Windows 下PowerShell 美化之旅(极其简单)

    查看本地策略 Get ExecutionPolicy List 如果是上图这种策略就不用改了 xff0c 如果不是就需要输入 set executionpolicy remotesigned 简单介绍一下五种策略 1 Restricted
  • nanopi2 启动信息

    Second Boot by Nexell Co Ver0 6 1 Built on Oct 16 2015 13 42 17 EMA VALUE 001 123 Lock value 61 156 GATE CYC 61 0x000084

随机推荐