Visual Studio C# WinForm开发入门(6):TreeView 控件使用

TreeView控件用树显示节点层次。
例如:顶级目录是根(C:),C盘下的每个子目录都是子节点,而每个子目录又都有自己的子节点
TreeView属性和方法:

属性 说明
CheckBoxes 表示节点旁边是否出现复选框
ImageList 指定一个包含节点图标的ImageList对象。ImageList对象是一个包含Image对象的集合
Nodes 将控件中的TreeNode集合作为TreeNodeCollection返回
SelectedNode 被选中的节点

常用事件:
AfterSelect:当所选节点发生变化时产生

TreeNode属性和方法:

TreeNode属性 说明
Checked 表示是否选中了TreeNode
FirstNode 指定Nodes集合众的第一个节点
FullPath 节点从数根开始的路径
ImageIndex 当去选一个节点时,指定TreeView的ImageList中要显示的图像的索引
LastNode 指定Nodes集合中的最后一个节点
NextNode 下一个同胞节点
Nodes 包含在当前节点中的TreeNode集合
PrevNode 前一个同胞节点
SelectedImageIndex 当选择一个节点时,指定TreeView的ImageList中要显示的图像的索引
Text 指定TreeNode的文本
TreeNode方法 说明
Collapse 加载时缩合节点
Expand 展开节点
ExpandAll 展开节点的所有子节点
GetNodeCount 返回子节点个数

实例
输入一个本机文件目录,用TreeView显示该目录的所有文件夹

1、添加一个Label控件,Text属性改为:“文件路径:”。
2、添加一个TextBox控件,适当拉长,Name属性改为inputTextBox
3、添加一个Button控件,Text属性改为:“确定”,Name属性改为enterButton
4、添加一个TreeView控件,适当调整大小,完成后如下图:
在这里插入图片描述

5、双击Button控件,编写Click事件,总体程序如下:

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.IO;//添加

namespace TreeView 控件
{
    
    
    public partial class Form1 : Form
    {
    
    
        public Form1()
        {
    
    
            InitializeComponent();
        }

        private void enterButton_Click(object sender, EventArgs e)
        {
    
    
            directoryTreeView.Nodes.Clear();// 每次确定时需要刷新内容
            string inputText = inputTextBox.Text; // 获得输入框的内容
            // 文件路径存在
            if (Directory.Exists(inputText))
            {
    
    
                TreeNode rootNode = new TreeNode(inputText); // 创建树节点
                directoryTreeView.Nodes.Add(rootNode); // 加入视图
                FindDirectory(inputText, rootNode);  //通过递归函数进行目录的遍历
            }
            // 文件路径不存在
            else
            {
    
    
                MessageBox.Show("输入目录不存在!!!");
                inputTextBox.Clear(); // 当文件目录不存在时清空控件内容
                directoryTreeView.Nodes.Clear();
            }
        }

        // 递归函数 遍历当前目录
        void FindDirectory(string nowDirectory, TreeNode parentNode)
        {
    
    
            try  // 当文件目录不可访问时,需要捕获异常
            {
    
    
                // 获取当前目录下的所有文件夹数组
                string[] directoryArray = Directory.GetDirectories(nowDirectory);
                if (directoryArray.Length > 0)
                {
    
    
                    foreach (string item in directoryArray)
                    {
    
    
                        // 遍历数组,将节点添加到父亲节点的
                        string str = Path.GetFileNameWithoutExtension(item);
                        TreeNode node = new TreeNode(str);
                        parentNode.Nodes.Add(node);
                        FindDirectory(item, node);
                    }
                }
            }
            catch (Exception)
            {
    
    
                parentNode.Nodes.Add("禁止访问");
            }
        }
    }
}

6、运行程序,输入任意已存在的文件夹路径,点击确定:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44788542/article/details/130402961