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、运行程序,输入任意已存在的文件夹路径,点击确定:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吾爱技术圈

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值