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

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

注意注意

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

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

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

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

    1. 在类别中选择 Visual BasicVisual C#

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

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

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

  5. 添加一个 ImageList名为 imageList1窗体并使用属性窗口中添加两个图像: 文件夹图像和中的文档图像 的顺序。

  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 属性分别设置为 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);      
演练:使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面 - johnlxj - johnlxj的博客 测试应用程序

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

测试窗体

  • 按 F5 运行应用程序。

    您将看到分割窗体包含一个 TreeView在左侧显示您的项目目录的控件和一个 ListView控件右侧的三个列。 您可以遍历 TreeView通过选择目录节点和 ListView填入内容的所选的目录。

演练:使用设计器创建带有 ListView 和 TreeView 控件的资源管理器样式的界面 - johnlxj - johnlxj的博客 后续步骤

本应用程序举例说明了一种结合使用 TreeViewListView 控件的方式。 有关这些控件的更多信息,请参见下列主题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnlxj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值