C# 窗体应用TreeView控件使用

C# 窗体应用TreeView控件使用

前言:

TreeView控件在窗体应用里面使用也是频率比较高的,我们在使用TreeView一般是对资源的分层展示,类似数据结构里面树的凹入表示法。很多公司都是使用TreeView控件作为文件显示信息的分级视图,如同Windows里的资源管理器的目录。TreeView控件中的各项信息都有一个与之相关的Node对象。TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。在建立TreeView控件后,可以展开和折叠、显示或隐藏其中的节点。TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。

每日一遍,防止早恋

image-20211121190703016

1.TreeView控件使用

1.1 TreeView控件常用的属性

Index 获取树节点在树节点集合中的位置
Nodes 获取分配给树视图控件的树节点集合
Parent 获取或设置控件的父容器
SelectedNode 获取或设置当前在树视图控件中选定的树节点
ExpandAll 展开所有树节点
Checked 获取或设置一个值,用以指示树节点是否处于选中状态
Text 获取或设置在树节点标签中显示的文本
Expand 展开树节点
Clear 清空树
Remove 从树视图控件中移除当前树节点。

1.2 创建窗体文件并修改名称

image-20211121152657490

2.设计界面

我们采用简单案例来实现效果

image-20211121162951636

3.添加和删除数据

3.1 点击treeView编辑结点

image-20211121163205603

3.2 在TreeView编辑器添加数据

注:我们这里属于静态添加数据,后面做的删除或者是添加也是静态的,后面做到删除是不起作用的

image-20211121163711117

image-20211121164122981

3.3 TreeView控件添加根结点操作

注:博主这里的添加并未添加到数据库,只是做一个静态的展示并未静态写入treeView,存在内存里结束就释放了

image-20211121165100205

3.4 TreeView控件添加子结点操作

我们需要获取我们选中的结点判断它是否为空,不为空就代表有根结点可以添加,没有就返回选择我们需要添加子节点。

image-20211121165636189

3.5 TreeView控件删除操作

这里我们需要判断我们选择的结点的父结点是否为空,为空代表这个结点是根结点需要整个删除,不为空代表为子结点,我们从父结点找到子结点删除。

image-20211121170154992

3.6 TreeView控件清空树操作

我们这里直接使用clear进行删除就可以了。没有其他操作

image-20211121170337000

4.整体效果展示

2021112323

4.1代码演示

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 TreeTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            TreeNode treeNode = new TreeNode(textBox1.Text, 2, 2);
            treeView1.Nodes.Add(treeNode);
            treeView1.Select();
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            TreeNode selectdnode = treeView1.SelectedNode;
            if(selectdnode!=null)
            {
                TreeNode chnode = new TreeNode(textBox2.Text, 2, 2);
                selectdnode.Nodes.Add(chnode);
                selectdnode.Expand();
                treeView1.Select();
            }
            else
            {
                MessageBox.Show("请选择需要添加子节点");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            TreeNode selectnode = treeView1.SelectedNode;
            TreeNode parentnode = selectnode.Parent; 
            if(parentnode == null)
            {
                treeView1.Nodes.Remove(selectnode);
            }
            else
            {
                parentnode.Nodes.Remove(selectnode);
            }
            treeView1.Select();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.textBox1.Clear();
            this.textBox2.Clear();
        }
    }
}

总结:

TreeView控件讲解博主并未使用数据库进行操作,而是简单的使用变量来操作,我们在使用数据库是需要使用结点的深度建立,每一层可能会有一个表,最终到最底层才是我们的数据,我们获取每层Name生成树,实现资源的凹入表示法,博主只是简单的介绍使用,比较适合新手上手,就是写一下静态的数据不连接数据库进行操作,如果你需要连接数据库关注博主下一篇文章可能会写,好了,创作不易点赞关注评论收藏,谢谢大佬了!!!!

1235468900

add_issue_to_excel(sheet, "A0002", "问题2", "提出人2", "处理人2", "processing") add_issue_to_excel(sheet, "A0003", "问题3", "提出人3", "处理人3", "好的,你可以按照如下步骤来实现从TreeView控件中选择一个节点,将该节点的文本close") # 测试按提出人汇总的问题单行数 count_by_raised_by = count_issues_by_raised_by(sheet) assert count_by_raised_by["提出人1"]["processing"] == 1 assert count_by_raised_by信息显示在一个文本框中: 1. 在窗体上添加一个TreeView控件和一个TextBox控件。 2. 在["提出人1"]["close"] == 0 assert count_by_raised_by["提出人2"]["processing"] == 1 assert count_by_raised_by["提出人2"]["close"] == 0 assert count_by_raised_by["TreeView控件的Nodes节点集合中添加一些节点。 3. 在TreeView控件的AfterSelect事件中编写代码,提出人3"]["processing"] == 0 assert count_by_raised_by["提出人3"]["close"] == 1将选择的节点的文本信息显示在TextBox控件中。 下面是示例代码: ```csharp private void tree # 测试按处理人汇总的问题单行数 count_by_assigned_to = count_issues_by_assigned_to(sheet) assert count_by_assigned_to["处理人1"]["processing"] == 1 assert count_by_assigned_to["处理人1"]["closeView1_AfterSelect(object sender, TreeViewEventArgs e) { textBox1.Text = e.Node.Text; } ``` 在这个"] == 0 assert count_by_assigned_to["处理人2"]["processing"] == 1 assert count_by_assigned_to["处理人2"]["close"] == 0 assert count_by_assigned_to["处理人3"]["processing"] == 0 assert示例代码中,我们通过AfterSelect事件获取了当前选择的节点,并将节点的文本信息显示在了TextBox控件 count_by_assigned_to["处理人3"]["close"] == 1 # 测试总体汇总的问题单行数 中。你可以根据自己的需求来修改代码,实现更多的功能。希望这能帮到你 count = count_issues(sheet) assert count["processing"] == 2 assert count["close"] == 1 # 测试!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IC00

打赏就发新文

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值