zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【题解】UOJ61. 【UR #5】怎样更有力气
    【题解】Kruskal重构树——[NOI2018] 归程
    图论补档——KM算法+稳定婚姻问题
    NOIP2018 提高组题解
    杂物
    朱刘算法学习笔记
    文化课の疑难杂症
    FHQ简要笔记
    题解 AT3877 【[ARC089C] GraphXY】
    CSP-S 2020 退役记
  • 原文地址:https://www.cnblogs.com/luyj00436/p/13996922.html
Copyright © 2011-2022 走看看