如题。。

解决方案 »

  1.   

    参考:
    c# winform项目treeview控件绑定本地电脑磁盘信息,读取文件夹信息,显示文件夹内文件内容 
    一个TreeView控件,一个ListBox控件。        程序启动,进入main函数时,开始浏览我的电脑中磁盘的信息        public void CpuMessage()
            {
                DriveInfo[] dr = DriveInfo.GetDrives();
                string driveName = "";
                foreach (DriveInfo d in dr)
                {
                    switch (d.DriveType)
                    {
                        case DriveType.Fixed:
                            driveName = "本地磁盘(" + d.Name.Substring(0,2) + ")";
                            break;
                        case DriveType.Removable:
                            driveName = "可移动磁盘(" + d.Name.Substring(0, 2) + ")";
                            break;
                        case DriveType.CDRom:
                            driveName = "DVD驱动器(" + d.Name.Substring(0, 2) + ")";
                            break;
                        case DriveType.Network:
                            driveName = "网络驱动器(" + d.Name.Substring(0, 2) + ")";
                            break;
                        default :
                            driveName = "未知(" + d.Name + ")";
                            break;
                    }
                    this.treeView1.Nodes.Add(d.Name, driveName);
                }
            }这时我的电脑的C,D,E,F等等盘的信息就添加的treeview控件的第一个节点中了。由于考虑到用递归法逐层浏览每个节点下文件的信息,所需要的时间太长(因为每个盘的文件夹确实很多,垂直方向上),所以我考虑到用数据点击节点事件。当鼠标点击每个节点时,开始执行寻找这个节点(既文件夹)下的所有一级子文件夹。这个就实现了再用户需要的时候才遍历,提高了性能。 void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                if (e.Node.Nodes.Count > 0)
                {
                    if (e.Node.IsExpanded)
                    {
                        e.Node.Collapse();
                        
                    }
                    else
                    {
                        e.Node.Expand();
                    }
                }
                else
                {
                    if (Directory.Exists(e.Node.Name))
                    {
                        try
                        {
                            string[] allDirectory = Directory.GetDirectories(e.Node.Name);
                            foreach (string s in allDirectory)
                            {
                                e.Node.Nodes.Add(s, s.Remove(0, s.LastIndexOf("//") + 1));
                            }
                            listBox1.Items.Clear();
                            string[] allFiles = Directory.GetFiles(e.Node.Name);
                            foreach (string sf in allFiles)
                            {
                                listBox1.Items.Add(sf.Remove(0, sf.LastIndexOf("//") + 1));
                            }
                        }
                        catch
                        {
                        }
                    }
                    e.Node.Expand();
                }
            }并在同时寻找该节点文件夹下的所有文件。添加到右边的ListBox控件中。这样就完成的基本的浏览磁盘数据信息