演练:使用设计器创建带有 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 属性中的椭圆 (),以打开 ColumnHeader 集合编辑器。添加三列,并将其 Text 属性分别设置为 Name、Type 和 Last Modified。 单击“确定”关闭对话框。

    4. 将 SmallImageList 属性设置为 imageList1。

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

     
            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 语句。

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

     
    		public Form1()
    {
    InitializeComponent();
    PopulateTreeView();
    }
  11. 处理 treeview1 的 NodeMouseClick 事件,实现代码以便在单击某个节点时,用该节点的内容来填充 listview1。 将该代码添加到 Form1 类中。

     
    		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 事件与其事件处理方法相关联。 将该代码添加到窗体构造函数中。

     
    			this.treeView1.NodeMouseClick +=
    new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);

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

测试窗体

  • 按 F5 运行应用程序。

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

Visual C# 2010 实现资源管理器的更多相关文章

  1. [No00009C]Visual Studio在 解决方案资源管理器 里同步定位打开的文件

    标题的意思就是在使用VS的时候,需要我们打开编辑的文件跟解决方案的资源管理器同步显示,这样方便定位到我们在修改哪个文件. 设置如下: 工具——选项——项目和解决方案——在解决方案资源管理器中跟踪活动项 ...

  2. Visual studio 2010 TFS地址解析,让团队资源管理器不再显示IP地址

    第一步: 找到名为hosts的配置文件(路径C:\Windows\System32\drivers\etc\hosts)用记事本打开并写入需要的配置,例如我用到的是TFS服务器的IP地址为192.16 ...

  3. 用资源管理器右键编译 Visual Studio 解决方案文件

    每次改动 VC 工程之后都要重新编译,每次 VS 又会生成调试数据库文件,很费时间,于是研究了一下如何在资源管理器中直接编译,还真发现了解决办法. 以下是适用 Visual Studio 2008 的 ...

  4. SharePoint 2010 "客户端不支持使用windows资源管理器打开此列表" 解决方法

    SharePoint 2010 在“库”--“库工具”,有一个“使用资源管理器打开”的按钮,点上去报“客户端不支持使用windows资源管理器打开此列表”.如图: 解决方案:在“开始”--“管理工具” ...

  5. 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门

    1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...

  6. Microsoft Visual Studio 2010 VSTS单元测试指南

    本来以为很简单的一个问题,今天预计10分钟搞定,结果到下班还没弄出结果,单元测试运行的时候一直处于无反应状态,最后估计可能是我装的2010有问题,结果到家一试果然是有问题,有时软件就是这么神奇. 言归 ...

  7. Visual Studio 2010 快捷键

    Visual Studio 2010 快捷键: CTRL + SHIFT + B 生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O 打开项目CTRL ...

  8. visual studio 2010运行速度提速

    前段时间为了一个项目而把VS2008换成了VS2010,结果原本就不堪重负的本本跑起VS2010来那更是慢得没话说,于是看了遍VS2010选项,又从网上到处找资料找优化方法,总算使我的VS2010跑得 ...

  9. Visual Studio 2010 中的 Web 开发

    概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用 ...

随机推荐

  1. [array] leetCode-26. Remove Duplicates from Sorted Array - Easy

    26. Remove Duplicates from Sorted Array - Easy descrition Given a sorted array, remove the duplicate ...

  2. VMware虚拟机12安装linux系统详细教程

    亲测有效,附图: 工具/原料 VM ware workstation12虚拟机(百度下载) 深度linux镜像ios系统文件 链接:https://pan.baidu.com/s/1RY1Plgru4 ...

  3. [ExtJS5学习笔记]第九节 Extjs5的mvc与mvvm框架结构简单介绍

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38537431 本文作者:sushengmiyan ------------------ ...

  4. AndroidStudio如何配置NDK/JNI开发环境

    参考文章: http://www.th7.cn/Program/Android/201509/550864.shtml http://www.open-open.com/lib/view/open14 ...

  5. 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

    SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...

  6. 后台返回的HTML整个页面代码打开方法

    后台返回的html代码片段,需要插入html标签中,而返回的整个html文档,则需要重写整个页面. 解决方法: 需要一个中转页面,用document.write()方法重写整个页面: // POST任 ...

  7. [Angular] Working with FormArray

    'FormArray' can work with array of 'FormGroup' or 'FormControl'. form = new FormGroup({ stock: new F ...

  8. java及jdbc与sql之间日期的转换

    javaSE中主要为日期字符串和日期对象之间的转换 JDBC中主要是util中Date与sql中作为数据库中Date的转换 public class DateDemo { public static ...

  9. web开发-MVC IoC 框架(转)

    随着Web应用的商业逻辑包含逐渐复杂的公式分析计算.决策支持等,使客户机越 来越不堪重负,因此将系统的商业分离出来.单独形成一部分,这样三层结构产生了. 其中‘层’是逻辑上的划分. 三层体系结构是将整 ...

  10. winfrom 操作PPT

    ///winfrom 操作PPT using System; using System.Collections.Generic; using System.Linq; using System.Tex ...