当前位置: 首页 > 编程语言 > C#

C#如何使用treeView列出目录和子目录而不显示根目录?分享

时间:2023-04-10 21:46:12 C#

C#如何使用treeView列出目录和子目录而不显示根目录?来自主文件夹|_a||_b||_c|_d|_e到|_b|_cde我想要一个没有主文件夹的树视图。我在这里找到了解决方案,但似乎很慢。当我第一次启动程序时,加载需要一分钟。没有该代码,它会立即打开。那么,您知道为什么应该改进这段代码或改进什么吗?编辑:已解决。试试这个,它看起来很快。您可以控制是否展开所有节点。您需要在某处包含LINQ命名空间(使用System.Linq;)//:stringyourRoot="D:\";treeView1.Nodes.AddRange(getFolderNodes(yourRoot,true).ToArray());privatevoidtreeView1_BeforeExpand(objectsender,TreeViewCancelEventArgse){TreeNodetn=e.Node.Nodes[0];如果(tn.Text=="..."){e.Node.Nodes.AddRange(getFolderNodes(((DirectoryInfo)e.Node.Tag).FullName,true).ToArray());如果(tn.Text=="...")tn.Parent.Nodes.Remove(tn);}}列表getFolderNodes(stringdir,boolexpanded){vardirs=Directory.GetDirectories(dir).ToArray();变种节点=新列表();foreach(stringdindirs){DirectoryInfodi=newDirectoryInfo(d);TreeNodetn=newTreeNode(di.Name);tn.Tag=di;int子计数=0;尝试{subCount=Directory.GetDirectories(d).Count();}catch{/*忽略拒绝访问*/}if(subCount>0)tn.Nodes.Add("...");如果(展开)tn.Expand();//**nodes.Add(tn);}返回节点;如果您确定总是希望从头开始查看所有级别,则可以使用此函数并删除BeforeExpand代码:ListgetAllFolderNodes(stringdir){vardirs=Directory.GetDirectories(dir).ToArray();变种节点=新列表();foreach(stringdindirs){DirectoryInfodi=newDirectoryInfo(d);TreeNodetn=newTreeNode(di.Name);tn.Tag=di;int子计数=0;尝试{subCount=Directory.GetDirectories(d).Count();}catch{/*忽略拒绝访问*/}if(subCount>0){varsubNodes=getAllFolderNodes(di.FullName);tn.Nodes.AddRange(subNodes.ToArray());}nodes.Add(tn);}返回节点;}你像以前那样调用:以上是C#学习教程:C#HowtolistdirectoriesandsubdirectoriesusingtreeViewwithoutshowingtherootdirectory?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——stringyourRoot="D:\";Cursor.Current=Cursors.WaitCursor;treeView1.Nodes.AddRange(getAllFolderNodes(yourRoot).ToArray());Cursor.Current=Cursors.Default;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: