从路径列表填充树视图 [英] populate treeview from a list of path
本文介绍了从路径列表填充树视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从文件夹路径列表填充一个TreeView,例如:
C:\ WINDOWS \加载项
C:\ WINDOWS \ AppPatch文件
C:\ WINDOWS \ AppPatch文件\ MUI
C:\ WINDOWS \ AppPatch文件\ MUI \ 040C
C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727
C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ MUI
C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ MUI \ 0409
有一个这样的输出中:
├───addins
├───AppPatch
│└───MUI
│└───040C
├───Microsoft.NET
│└───Framework
│└───v2.0.50727
│└───MUI
│└───0409
注意有没有C:\ WINDOWS \ Microsoft.NET'或'C:\ WINDOWS \ Microsoft.NET \框架在列表中。我一直在这方面的工作了差不多两天,有一个在我的code一堆错误的。希望我可以在这里得到帮助。
感谢。
埃里克
解决方案
私人无效Form1_Load的(对象发件人,EventArgs的)
{
VAR路径=新的名单,其中,串>
{
@C:\ WINDOWS \ AppPatch文件\ MUI \ 040C
@C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727
@C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ MUI,
@C:\ WINDOWS \加载项,
@C:\ WINDOWS \ AppPatch文件,
@C:\ WINDOWS \ AppPatch文件\ MUI,
@C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ MUI \ 0409
};
treeView1.PathSeparator = @\;
PopulateTreeView(为TreeView1,路径,'\\');
}
私有静态无效PopulateTreeView(TreeView的树视图,IEnumerable的<字符串>路径,焦炭pathSeparator)
{
树节点lastNode = NULL;
串subPathAgg;
的foreach(在路径字符串路径)
{
subPathAgg =的String.Empty;
的foreach(在path.Split串子路径(pathSeparator))
{
subPathAgg + = SUBPATH + pathSeparator;
树节点[]节点= treeView.Nodes.Find(subPathAgg,真正的);
如果(nodes.Length == 0)
如果(lastNode == NULL)
lastNode = treeView.Nodes.Add(subPathAgg,子路径);
其他
lastNode = lastNode.Nodes.Add(subPathAgg,子路径);
其他
lastNode =节点[0];
}
}
}
I'm trying to populate a treeview from a list of folder path, for example:
C:\WINDOWS\addins
C:\WINDOWS\AppPatch
C:\WINDOWS\AppPatch\MUI
C:\WINDOWS\AppPatch\MUI\040C
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI\0409
with an ouput like this:
├───addins
├───AppPatch
│ └───MUI
│ └───040C
├───Microsoft.NET
│ └───Framework
│ └───v2.0.50727
│ └───MUI
│ └───0409
Notice there's no 'C:\WINDOWS\Microsoft.NET' or 'C:\WINDOWS\Microsoft.NET\Framework' in the list. I've been working on this for almost two days and there's a bunch of bug in my code. Hope I can get help from here.
Thanks.
Eric
解决方案
private void Form1_Load(object sender, EventArgs e)
{
var paths = new List<string>
{
@"C:\WINDOWS\AppPatch\MUI\040C",
@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727",
@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI",
@"C:\WINDOWS\addins",
@"C:\WINDOWS\AppPatch",
@"C:\WINDOWS\AppPatch\MUI",
@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI\0409"
};
treeView1.PathSeparator = @"\";
PopulateTreeView(treeView1, paths, '\\');
}
private static void PopulateTreeView(TreeView treeView, IEnumerable<string> paths, char pathSeparator)
{
TreeNode lastNode = null;
string subPathAgg;
foreach (string path in paths)
{
subPathAgg = string.Empty;
foreach (string subPath in path.Split(pathSeparator))
{
subPathAgg += subPath + pathSeparator;
TreeNode[] nodes = treeView.Nodes.Find(subPathAgg, true);
if (nodes.Length == 0)
if (lastNode == null)
lastNode = treeView.Nodes.Add(subPathAgg, subPath);
else
lastNode = lastNode.Nodes.Add(subPathAgg, subPath);
else
lastNode = nodes[0];
}
}
}
这篇关于从路径列表填充树视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文