C# TreeView控件的使用

主要内容

树形图控件添加根节点、添加子节点、删除选定节点

树形图删除选定节点

读取SQL Server数据(模拟数据库读取)

环境

C# 语言

.Net Framework 4.5.2 框架

关键语言

添加根节点

treeView名称.Nodes.Add(“要添加的根节点值”);

TreeView 控件的基本用法

为了演示相关用法,属性方法。通过VS2010创建一个WinForm项目,窗体如下所示。

 添加根节点

/// <summary>
        /// 添加根节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_AddNodes_Click(object sender, EventArgs e)
        {
            //判断输入数值非空
            if (string.IsNullOrEmpty(txt_Name.Text.Trim()))
            {
                MessageBox.Show("要添加的节点名称不能为空!");
                return;
            }
            //添加节点
            treeView_main.Nodes.Add(txt_Name.Text.Trim());
            txt_Name.Text = "";
        }

添加子节点

/// <summary>
        /// 添加子节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_SonNodes_Click(object sender, EventArgs e)
        {
            //判断节点非空
            if (string.IsNullOrEmpty(txt_Name.Text.Trim()))
            {
                MessageBox.Show("要添加的节点名称不能为空!");
                return;
            }
            if (treeView_main.SelectedNode == null)
            {
                MessageBox.Show("请选择要添加的节点!");
                return;
            }
            else
            {
                treeView_main.SelectedNode.Nodes.Add(txt_Name.Text.Trim());
                txt_Name.Text = "";
            }
        }

删除选中的节点

/// <summary>
        /// 删除选定结点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_NodeDelete_Click(object sender, EventArgs e)
        {
            if (treeView_main.SelectedNode == null)
            {
                MessageBox.Show("请选择要删除的节点!");
                return;
            }
            else
            {
                treeView_main.SelectedNode.Remove();
            }
        }
    }

树形图给节点添加图标

初始化Demo值

为了验证节点,在窗口初始化事件添加方法loadTreeView()用于测试数据,测试数据代码如下:

/// <summary>
        /// 初始化TreeView
        /// </summary>
        private void loadTreeView()
        {
            for (int i = 0; i < 5; i ++)
            {
                TreeNode treeNode_1 = new TreeNode();               //添加根节点
                treeNode_1.Text = "根节点" + i;               
                treeView_main.Nodes.Add(treeNode_1);
                //添加子节点
                for (int j = 0; j < 5; j ++)                        //添加二级节点
                {
                    TreeNode treeNode_2 = new TreeNode();
                    treeNode_2.Text = i + ":二级节点" + j;
                    treeNode_1.Nodes.Add(treeNode_2);
                }
            }
        }

运行后执行显示如下:

 绑定ImageList控件

页面插入ImageList控件(更改合适的名字)。属性点击Images集合,在这里编辑图标排序。

 设置不同图标

方法1:直接在设计页面修改树形图属性。

绑定ImageList、ImageIndex/imagekey 、SelectedImageIndex/SelectedImageKey、checkBoxs、StateImageList。

如图,默认状态下,图标为 ,选中状态下,图标为 。复选框未选中时图标为 ,目标选中时,图标为

 对应的页面的*.Designer.cs代码(以ImageIndex和SelectedImageIndex为例):

this.treeView_main.CheckBoxes = true;                               //是否复选框             
            this.treeView_main.Dock = System.Windows.Forms.DockStyle.Fill;      
            this.treeView_main.ImageIndex = 0;                                  //默认图标索引
            this.treeView_main.ImageList = this.imageList1;                     //默认图标绑定图片列控件          
            this.treeView_main.Location = new System.Drawing.Point(0, 0);
            this.treeView_main.Name = "treeView_main";
            this.treeView_main.SelectedImageIndex = 1;                          //选中图标对应索引
            this.treeView_main.Size = new System.Drawing.Size(200, 450);
            this.treeView_main.StateImageList = this.imageList_State;           //自定义状态(复选框是否选中)状态绑定图片控件,(默认第0张,选中第1张)
            this.treeView_main.TabIndex = 0;

对应的页面的*.Designer.cs代码(以ImageKey和SelectedImageKey为例):

this.treeView_main.CheckBoxes = true;                               //是否复选框             
            this.treeView_main.Dock = System.Windows.Forms.DockStyle.Fill;      
            this.treeView_main.ImageKey = "tree_add.png";                       //默认图标名称
            this.treeView_main.ImageList = this.imageList1;                     //默认图标绑定图片列控件          
            this.treeView_main.Location = new System.Drawing.Point(0, 0);
            this.treeView_main.Name = "treeView_main";
           this.treeView_main.SelectedImageKey = "tree_plus.png";              //选中图标名称
            this.treeView_main.Size = new System.Drawing.Size(200, 450);
            this.treeView_main.StateImageList = this.imageList_State;           //自定义状态(复选框是否选中)状态绑定图片控件,(默认第0张,选中第1张)
            this.treeView_main.TabIndex = 0;

方法2:修改后台代码

后台代码如下:

/// <summary>
        /// 初始化加载方法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            treeView_main.ImageList = imageList1;               //绑定图片列控件
            treeView_main.ImageIndex = 0;                       //默认图标
            treeView_main.SelectedImageIndex = 1;               //选中时图标
            treeView_main.CheckBoxes = true;                    //是否复选框(默认情况第0个图标,选中情况第1个图标)
            treeView_main.StateImageList = imageList_State;     //用户自定义状态控件
            loadTreeView();             //初始化加载TreeView
        }

        /// <summary>
        /// 初始化TreeView
        /// </summary>
        private void loadTreeView()
        {
            for (int i = 0; i < 5; i ++)
            {
                TreeNode treeNode_1 = new TreeNode();               //添加根节点
                treeNode_1.Text = "根节点" + i;               
                treeView_main.Nodes.Add(treeNode_1);
                //添加子节点
                for (int j = 0; j < 5; j ++)                        //添加二级节点
                {
                    TreeNode treeNode_2 = new TreeNode();
                    treeNode_2.Text = i + ":二级节点" + j;
                    treeNode_1.Nodes.Add(treeNode_2);
                }
            }
        }

如图,默认状态下,图标为 ,选中状态下,图标为 。复选框未选中时图标为 ,目标选中时,图标为

树形图不显示线条

 TreeView控件右键操作

参考网址

[1] C# TreeView 控件的综合使用方法: https://blog.csdn.net/imxiangzi/article/details/81200517

[2]官网TreeNode说明: https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.treenode?view=netframework-4.7.2

原文地址:https://www.cnblogs.com/luyj00436/p/13996922.html