woshishandawang

博客园 首页 新随笔 联系 订阅 管理
  • 在“文件”菜单上指向“新建”,然后单击“项目”。

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

    1. 在“项目类型”窗格中选择“Visual Basic 项目”或“Visual C# 项目”。

    2. 在“模板”窗格中选择“Windows 应用程序”。

  • 单击“确定”。新建了一个 Windows 窗体项目。

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

  • 向该窗体添加一个名为 imageList1ImageList,然后使用属性浏览器按所列顺序添加两个图标:一个文件夹图标和一个文档图标。

  • 向该窗体添加一个名为 treeview1TreeView 控件,将其置于 SplitContainer 控件的左侧。在 treeView1 的属性浏览器中执行以下操作:

    1. Dock 属性设置为 Fill

    2. ImageList 属性设置为 imagelist1.

  • 向该窗体中添加一个名为 listView1ListView 控件,将其置于 SplitContainer 控件的右侧。在 listview1 的属性浏览器中执行以下操作:

    1. Dock 属性设置为 Fill

    2. View 属性设置为 Details

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

    4. SmallImageList 属性设置为 imageList1.

  • 实现代码以便将节点和子节点填充到 TreeView 中。示例代码从文件系统读取,并且要求应用程序目录中存在 folder.icodoc.ico, 这两个图标。

  • private void PopulateTreeView()
                {
                TreeNode rootNode;
                DirectoryInfo info = new DirectoryInfo(@"C:\Documents and Settings");
                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);
                }
                }
                

  • 在窗体的构造函数或 Load 事件处理方法中,调用上一步中的设置方法。

  • public Form1()
                {
                InitializeComponent();
                PopulateTreeView();
                }
                

  • 处理 treeview1NodeMouseClick 事件,实现代码以便在单击某个节点时,用该节点的内容来填充 listview1

  • 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);
    }
    

    到此程序演示完毕

     

    posted on 2008-03-03 10:41  王永东  阅读(879)  评论(0编辑  收藏  举报