问题描述
如题。。。。。
解决方案
解决方案二:
参考:c#winform项目treeview控件绑定本地电脑磁盘信息,读取文件夹信息,显示文件夹内文件内容一个TreeView控件,一个ListBox控件。程序启动,进入main函数时,开始浏览我的电脑中磁盘的信息publicvoidCpuMessage(){DriveInfo[]dr=DriveInfo.GetDrives();stringdriveName="";foreach(DriveInfodindr){switch(d.DriveType){caseDriveType.Fixed:driveName="本地磁盘("+d.Name.Substring(0,2)+")";break;caseDriveType.Removable:driveName="可移动磁盘("+d.Name.Substring(0,2)+")";break;caseDriveType.CDRom:driveName="DVD驱动器("+d.Name.Substring(0,2)+")";break;caseDriveType.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控件的第一个节点中了。由于考虑到用递归法逐层浏览每个节点下文件的信息,所需要的时间太长(因为每个盘的文件夹确实很多,垂直方向上),所以我考虑到用数据点击节点事件。当鼠标点击每个节点时,开始执行寻找这个节点(既文件夹)下的所有一级子文件夹。这个就实现了再用户需要的时候才遍历,提高了性能。voidtreeView1_NodeMouseClick(objectsender,TreeNodeMouseClickEventArgse){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(stringsinallDirectory){e.Node.Nodes.Add(s,s.Remove(0,s.LastIndexOf("//")+1));}listBox1.Items.Clear();string[]allFiles=Directory.GetFiles(e.Node.Name);foreach(stringsfinallFiles){listBox1.Items.Add(sf.Remove(0,sf.LastIndexOf("//")+1));}}catch{}}e.Node.Expand();}}并在同时寻找该节点文件夹下的所有文件。添加到右边的ListBox控件中。这样就完成的基本的浏览磁盘数据信息