Windows 资源管理器显示了用户计算机上的文件和文件夹的层次结构。
|
使用设置。 |
创建包含 ListView 和 TreeView 控件的窗体
-
“项目”。
-
“新建项目”对话框中,请执行以下操作:
-
“Visual C#”。
-
“Windows 窗体应用程序”。
-
-
随即便会创建一个新的 Windows 窗体项目。
-
Fill。
-
ImageList,然后使用“属性”窗口按所列顺序添加两个图像:一个文件夹图像和一个文档图像。
-
的“属性”窗口中,执行以下操作:
-
Fill。
-
imagelist1。
-
-
的“属性”窗口中,执行以下操作:
-
Fill。
-
Details。
-
“确定”关闭对话框。
-
imageList1。
-
-
类中。
private void PopulateTreeView() { TreeNode rootNode; DirectoryInfo info = new DirectoryInfo(@"../.."); if (info.Exists) { rootNode = new TreeNode(info.Name); rootNode.Tag = info; GetDirectories(info.GetDirectories(), rootNode); treeView1.Nodes.Add(rootNode); } } private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo) { TreeNode aNode; DirectoryInfo[] subSubDirs; foreach (DirectoryInfo subDir in subDirs) { aNode = new TreeNode(subDir.Name, 0, 0); aNode.Tag = subDir; aNode.ImageKey = "folder"; subSubDirs = subDir.GetDirectories(); if (subSubDirs.Length != 0) { GetDirectories(subSubDirs, aNode); } nodeToAddTo.Nodes.Add(aNode); } }
-
由于以前的代码使用 System.IO 命名空间,因此需要在窗体顶部添加 using 或 import 语句。
using System.IO; -
将该代码添加到窗体构造函数中。
public Form1() { InitializeComponent(); PopulateTreeView(); } -
类中。
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { TreeNode newSelected = e.Node; listView1.Items.Clear(); DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag; ListViewItem.ListViewSubItem[] subItems; ListViewItem item = null; foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories()) { item = new ListViewItem(dir.Name, 0); subItems = new ListViewItem.ListViewSubItem[] {new ListViewItem.ListViewSubItem(item, "Directory"), new ListViewItem.ListViewSubItem(item, dir.LastAccessTime.ToShortDateString())}; item.SubItems.AddRange(subItems); listView1.Items.Add(item); } foreach (FileInfo file in nodeDirInfo.GetFiles()) { item = new ListViewItem(file.Name, 1); subItems = new ListViewItem.ListViewSubItem[] { new ListViewItem.ListViewSubItem(item, "File"), new ListViewItem.ListViewSubItem(item, file.LastAccessTime.ToShortDateString())}; item.SubItems.AddRange(subItems); listView1.Items.Add(item); } listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
将该代码添加到窗体构造函数中。
this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
现在可以测试窗体,以确保它的行为与预期相同。
测试窗体
-
按 F5 运行应用程序。
中将填充选定目录的内容。