演练:使用设计器创建带有 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. Java反射学习总结三(静态代理)

    反射最常见的应用就是代理模式了. 本文先简单介绍一下代理模式,并写一个静态代理的例子.为下一篇重要的动态代理做点铺垫 代理模式的作用是: 为其他对象提供一种代理以控制对这个对象的访问. 另外在某些情况 ...

  2. 算法练习--二分搜索哈希表-JS 实现

    1. 以哈希KEY的值建立二叉哈希表 2. 依据传入的哈希值使用二分法搜索 详细实现例如以下: function binarySearchTable(comp){ this.comp = comp; ...

  3. 神经网络 vs 大脑

    海马区域(负责记忆的关键区域) 0. 常见概念 神经递质:neurotransmitter 在突触传递中是担当"信使"的特定化学物质.简称递质. 重要的神经递质有:乙酰胆碱: 1. ...

  4. [JS Compose] 2. Enforce a null check with composable code branching using Either

    We define the Either type and see how it works. Then try it out to enforce a null check and branch o ...

  5. Ubuntu 16.04下安装Anaconda

    1.下载Anaconda到系统 官网:https://www.anaconda.com/download/ 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu. ...

  6. Android 自定义RadioButton样式

     上面这种3选1的效果如何做呢?用代码写? 其实有更简单的办法,忘了RadioButton有什么特性了吗? 我就用RadioButton实现了如上效果,其实很简单的. 首先定义一张background ...

  7. [Angular] Router outlet events

    For example, we have a component which just simply render router-outlet: import { Component } from ' ...

  8. [NPM] Run a set of similar npm scripts with a wildcard

    In this lesson we will run a set of scripts that are grouped together with a wildcard using the npm- ...

  9. Erlang游戏开发-协议

    Erlang游戏开发-协议 选择什么协议? 协议包含通讯协议和数据格式. 通讯协议 通讯协议目前常用的是:HTTP 和TCP .其有各自的特点根据游戏的特点而进行选择. HTTP HTTP比较成熟,使 ...

  10. 小强的HTML5移动开发之路(23)—— jQuery Mobile入门

    一.下载jQuery Mobile 下载地址:http://jquerymobile.com/ 点击Download 下载如下zip包 下载成功后如下图 解压目录如图: 点击index.html进入d ...