Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm trying to populate a treeview from a list of folder path, for example:

C:WINDOWSaddins
C:WINDOWSAppPatch
C:WINDOWSAppPatchMUI
C:WINDOWSAppPatchMUI40C
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI409

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
517 views
Welcome To Ask or Share your Answers For Others

1 Answer

private void Form1_Load(object sender, EventArgs e)
    {
        var paths = new List<string>
                        {
                            @"C:WINDOWSAppPatchMUI40C",
                            @"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727",
                            @"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI",
                            @"C:WINDOWSaddins",
                            @"C:WINDOWSAppPatch",
                            @"C:WINDOWSAppPatchMUI",
                            @"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727MUI409"
                        };

        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];
            }
        }
    }

alt text


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...