24
soy nuevo con nodos aquí .. :) me ocurrió con este algoritmo, sino que sólo muestra la lista de nodos padre .. como esta ..Rellenar TreeView con estructura de directorios del sistema de archivos
a
a.txt
b
c
c
m
n
b
o
p
etc...
quiero el siguiente nodo será puesto en uno de los nodos dentro del nodo anterior .. por lo que se van a plantear como esto ..
a
a.txt
b
o
p
c
m
n
etc...
tengo algunas ideas en mente, pero me puede aplicar a los códigos. . :) cualquier ayuda por favor ..
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);
}
@vrynxzent - si está interesado, la respuesta actualizada con un enfoque no recursivo también. –
ahh ... ya veo ... prefiero usar el no recursivo debido al subprocesamiento y probar capturar ... también puedo hacerlo en método recursivo pero necesito ver el formulario que actualiza los datos mientras obtengo archivos y directorios ... –
Usé funciones recursivas e iterativas y este es mi código, pero el complemento arroja un error: ** Se deniega el acceso a la ruta 'E: \ System Volume Information \'. **; este es mi código: ** ListDirectory (treeView1, @ "E: \"); ** –