c# winform项目treeview控件绑定本地电脑磁盘信息,读取文件夹信息,显示文件夹内文件内容

        刚开始写这个的时候是想利用c#的com+组建开发active图片上传控件,写这篇博文的时候是完成了基本的我的电脑磁盘文件浏览的功能,所以想在这里和大家分享,看看大家对后期的完成有没有什么好的意见。我这里实现的很简单,一个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控件中。这样就完成的基本的浏览磁盘数据信息。写这盘文章前,在网上找了很多例子,发现大同小异,不尽人意,所以才决定自己写个简单的来测试下。希望对跟我一开始有同样问题的朋友有所帮助

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页