我想从文件夹路径列表填充一个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:WINDOWSaddins
C:WINDOWSAppPatch
C:WINDOWSAppPatchMUI
C:WINDOWSAppPatchMUI 40C
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI 409
with an ouput like this:
├───addins
├───AppPatch
│ └───MUI
│ └───040C
├───Microsoft.NET
│ └───Framework
│ └───v2.0.50727
│ └───MUI
│ └───0409
Notice there's no 'C:WINDOWSMicrosoft.NET' or 'C:WINDOWSMicrosoft.NETFramework' 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:WINDOWSAppPatchMUI 40C",
@"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727",
@"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI",
@"C:WINDOWSaddins",
@"C:WINDOWSAppPatch",
@"C:WINDOWSAppPatchMUI",
@"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI 409"
};
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];
}
}
}