利用TreeView控件和ImageList控件显示我的电脑的结构目录:我的电脑-驱动器-文件夹,程序运行结果如下图所示。

浏览我的电脑_edn

程序代码如下。

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace eg30_useTreeView
{
    public partial class FolderDialog : Form
    {
        public FolderDialog()
        {
            InitializeComponent();
        }

        private void ForderTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Text.ToString() != "我的电脑")
                EnumDirectories(e.Node);
            else
                EnumDrives(e.Node);
        }
        private void EnumDrives(TreeNode ParentNode)
        {
            if (ParentNode.Nodes.Count == 0)
            {
                foreach (string drive in Directory.GetLogicalDrives())
                {
                    FolderTree.SelectedNode = ParentNode;
                    TreeNode TempNode = new TreeNode();
                    TempNode.Text = drive.Substring(0, drive.Length - 1);
                    TempNode.Tag = drive;
                    TempNode.ImageIndex = 1;
                    TempNode.SelectedImageIndex = 1;
                    FolderTree.SelectedNode.Nodes.Add(TempNode);
                    FolderTree.SelectedNode.Nodes[FolderTree.SelectedNode.Nodes.Count - 1].EnsureVisible();
                }
            }
        }
        private void EnumDirectories(TreeNode ParentNode)
        {
            FolderTree.SelectedNode = ParentNode;
            string DirectoryPath = ParentNode.Tag.ToString();
            if (ParentNode.Nodes.Count == 0)
            {
                if (DirectoryPath.Substring(DirectoryPath.Length - 1) != @"\")
                    DirectoryPath += @"\";
                try
                {
                    foreach (string directory in Directory.GetDirectories(DirectoryPath))
                    {
                        TreeNode TempNode = new TreeNode();
                        TempNode.Text = directory.Substring(directory.LastIndexOf(@"\") + 1);
                        TempNode.Tag = directory;
                        TempNode.ImageIndex = 3;
                        TempNode.SelectedImageIndex = 2;
                        FolderTree.SelectedNode.Nodes.Add(TempNode);
                        FolderTree.SelectedNode.Nodes[FolderTree.SelectedNode.Nodes.Count - 1].EnsureVisible();
                    }
                }
                catch (Exception)
                {
                }

            }
        }
    }
}