Visual C#2010 实现资源管理器

it2022-05-05  157

演练:使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面

Visual Studio 2010     其他版本     此主题尚未评级 - 评价此主题  

 

Visual Studio 的一个优点是能够在短时间内创建具有专业级外观的 Windows 窗体应用程序。 通常情况下,创建一个带有 ListView  TreeView 控件的用户界面 (UI),该界面类似于 Windows 操作系统的 Windows 资源管理器。 Windows 资源管理器显示了用户计算机上的文件和文件夹的层次结构。

注意

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置” 有关更多信息,请参见 使用设置。

创建包含 ListView 和 TreeView 控件的窗体

“文件”菜单上指向“新建”,再单击“项目”

“新建项目”对话框中,请执行以下操作:

在类别中选择“Visual Basic”“Visual C#”

在模板列表中,选择“Windows 窗体应用程序”

单击“确定” 随即便会创建一个新的 Windows 窗体项目。

向该窗体添加一个 SplitContainer 控件,并将其 Dock 属性设置为 Fill。

向该窗体中添加一个名为 imageList1  ImageList,然后使用“属性”窗口按所列顺序添加两个图像:一个文件夹图像和一个文档图像。

向该窗体添加一个名为 treeview1  TreeView 控件,将其置于 SplitContainer 控件的左侧。  treeView1 的“属性”窗口中,执行以下操作:

 Dock 属性设置为 Fill。

 ImageList 属性设置为 imagelist1

向该窗体中添加一个名为 listView1  ListView 控件,将其置于 SplitContainer 控件的右侧。  listview1 的“属性”窗口中,执行以下操作:

 Dock 属性设置为 Fill。

 View 属性设置为 Details。

单击 Columns 属性中的椭圆 (),以打开 ColumnHeader 集合编辑器。添加三列,并将其 Text 属性分别设置为 NameType  Last Modified 单击“确定”关闭对话框。

 SmallImageList 属性设置为 imageList1

实现代码以便将节点和子节点填充到 TreeView 中。 将该代码添加到 Form1 类中。

C# VB   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 语句。

C# VB   using System.IO;

在窗体的构造函数或 Load 事件处理方法中,调用上一步中的设置方法。 将该代码添加到窗体构造函数中。

C# VB   public Form1() { InitializeComponent(); PopulateTreeView(); }

处理 treeview1  NodeMouseClick 事件,实现代码以便在单击某个节点时,用该节点的内容来填充 listview1 将该代码添加到 Form1 类中。

C# VB   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); }

如果使用的是 C#,请确保将 NodeMouseClick 事件与其事件处理方法相关联。 将该代码添加到窗体构造函数中。

C#   this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick); 测试应用程序

现在可以测试窗体,以确保它的行为与预期相同。

测试窗体

按 F5 运行应用程序。

您将看到一个包含 TreeView 控件的拆分窗体,该窗体左侧显示您的项目目录,右侧是分为三列的 ListView 控件。 选择目录节点可以遍历 TreeView,而 ListView 中将填充选定目录的内容。

转载于:https://www.cnblogs.com/txw1958/archive/2012/07/30/2616074.html


最新回复(0)