Заполнить TreeView структурой каталогов файловой системы

Я новичок в использовании узлов ... :) Я придумал этот алгоритм, но он показывает только список родительских узлов .. вот так ..

a
   a.txt
   b
   c
c
   m
   n
b
   o
   p
etc...

я хочу, чтобы следующий узел был помещен в один из узлов внутри предыдущего узла .. так он будет выглядеть так ..

a
   a.txt
   b
      o
      p
   c
      m
      n
etc...

У меня есть несколько идей, но я могу реализовать их в кодах .. :) Любая помощь, пожалуйста ..

private void ListDirectory(TreeView treeView, String path)
{            
    Stack<string> stack = new Stack<string>();
    TreeNode DirFilesCollection = new TreeNode();

    stack.Push(path);            

    while (stack.Count > 0)
    {
        string dir = stack.Pop();
        try
        {
            List<String> parentDir = new List<string>();
            parentDir.AddRange(Directory.GetFiles(dir, "*.*"));
            parentDir.AddRange(Directory.GetDirectories(dir));

            DirectoryInfo d = new DirectoryInfo(dir);
            TreeNode TParent = new TreeNode(d.Name);

            foreach (String s in parentDir)
            {
                FileInfo f = new FileInfo(s);
                TreeNode subItems = new TreeNode(f.Name);

                TParent.Nodes.Add(subItems);
            }

            DirFilesCollection.Nodes.Add(TParent);

            foreach (string dn in Directory.GetDirectories(dir))
            {
                stack.Push(dn);
            }
        }
        catch
        {}
    }

    Action clearTreeView = () => treeView.Nodes.Clear();
    this.Invoke(clearTreeView);

    Action showTreeView = () => treeView.Nodes.Add(DirFilesCollection);
    this.Invoke(showTreeView);
}
28
задан Andy G 31 October 2014 в 16:08
поделиться