Visual C# 2010 实现资源管理器

简介: 演练:使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面 Visual Studio 2010     其他版本     此主题尚未评级 - 评价此主题     Visual Studio 的一个优点是能够在短时间内创建具有专业级外观的 Windows 窗体应用程序。

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

Visual Studio 2010
 
 
 
 
此主题尚未评级 - 评价此主题
 

 

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

注意注意

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

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

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

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

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

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

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

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

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

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

    1.  Dock 属性设置为 Fill

    2.  ImageList 属性设置为 imagelist1

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

    1.  Dock 属性设置为 Fill

    2.  View 属性设置为 Details

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

    4.  SmallImageList 属性设置为 imageList1

  8. 实现代码以便将节点和子节点填充到 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);
                }
            }
    
    
    
  9. 由于以前的代码使用 System.IO 命名空间,因此需要在窗体顶部添加 using 或 import 语句。

    C#
    VB
     
    using System.IO;
    
    
    
  10. 在窗体的构造函数或 Load 事件处理方法中,调用上一步中的设置方法。 将该代码添加到窗体构造函数中。

    C#
    VB
     
    		public Form1()
    		{
    			InitializeComponent();
    			PopulateTreeView();
    		}
    
    
    
  11. 处理 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 中将填充选定目录的内容。

相关文章
|
24天前
|
C++ Python
【Pybind11】pybind11在visual studio中的配置
【Pybind11】pybind11在visual studio中的配置
|
IDE 开发工具
关于Microsoft Visual Studio远程调试监视器(msvsmon.exe)
关于Microsoft Visual Studio远程调试监视器(msvsmon.exe)
291 0