📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//添加了一个输入输出库的引用
using System.IO;
namespace Example19_5
{
public partial class Form1 : Form
{
/// <summary>
/// 构造函数
/// </summary>
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 单击按钮时,将按输入的路径更新TreeView控件中的显示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
// 清楚TreeView控件中的所有节点
treeView1.Nodes.Clear();
// 检测输入的路径是否为合法路径
// 如果是则显示路径下的文件夹
// 如果不是则给出错误提示窗体
if (Directory.Exists(textBox1.Text))
{
// 先添加根结点为输入的目录
treeView1.Nodes.Add(textBox1.Text);
// 将根结点所代表的目录下的子文件夹显示
PopulateTreeView(
textBox1.Text, treeView1.Nodes[0]);
}
// 如果路径不合法则给出错误提示窗体
else
MessageBox.Show(textBox1.Text + " could not be found.",
"Directory Not Found", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
/// <summary>
/// 临时储存变量
/// </summary>
string substringDirectory;
/// <summary>
/// 列出给定目录的所有子目录
/// </summary>
/// <param name="directoryValue"></param>
/// <param name="parentNode"></param>
public void PopulateTreeView(string directoryValue, TreeNode parentNode)
{
// 储存目录的子目录
string[] directoryArray = Directory.GetDirectories(directoryValue);
// 列出当前目录的子目录
try
{
// 察看是否还有子目录
if (directoryArray.Length != 0)
{
// 对于每一个子目录创建一个节点
// 对该目录下的文件夹再创建一个个节点
// 对所有的文件夹再执行PopulateTreeView方法,显示其子目录
foreach (string directory in directoryArray)
{
// 从完整的路径名中获取尾部的有效文件夹名称
// 通过查找“\”实现
substringDirectory = directory.Substring(
directory.LastIndexOf('\\') + 1,
directory.Length - directory.LastIndexOf('\\') - 1);
// 为当前目录创建节点
TreeNode myNode = new TreeNode(substringDirectory);
// 添加当前节点到TreeView控件中
parentNode.Nodes.Add(myNode);
// 列出子目录的文件夹
PopulateTreeView(directory, myNode);
}
}
}
// 捕获异常
catch (UnauthorizedAccessException)
{
parentNode.Nodes.Add("Access denied");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -