Tree View em c#

Nody

Banido
Tenho que fazer um explorer com uma tree view

Código:
int i = 0;
string[] Drivelist = Environment.GetLogicalDrives();
for(i = 0; i < Drivelist.Length; i++)
{
treeView1.Nodes.Add(Drivelist[i]); 
}
agora não sei como ir buscar as pastas dentro dos discos e as pastas que tao dentro das pastas e assim sucessivamente
 
Última edição pelo moderador:
ehh.... já tás aqui .... :x2:
Fiz isso hoje na aula.....
Tens de usar recursividade.....
A logica é seguinte:

  • Inseres a raiz da directoria na treeview
    Código:
    treeView1.Nodes.Add(@"C:\");
  • Depois no LOOP que usares para ir buscar a informação de pasta fazes
    Código:
    treeView1.Nodes[0].Nodes.Add([COLOR=Navy]FuncaoRecursiva[/COLOR](CaminhoAteAPasta,NomePasta));
  • Depois a função que vais defenir (FuncaoRecursiva) tem de devolver um objecto do tipo TreeNode , dentro dessa função vais fazer o seguinte:
  • Vais buscar a informação das pastas que estão dentro dessa pasta (Aproveitas a string CaminhoAteAPasta que passaste na função)
  • Depois crias um objecto do tipo TreeNode e no construtor passas o nome da pasta com que entraste na função
    Código:
    TreeNode treeNode1 = new TreeNode(NomePasta);
  • Voltas a fazer historia do LOOP para ver as pasta e dentro do LOOP e metes
    Código:
    treeNode1.Nodes.Add([COLOR=Navy]FuncaoRecursiva[/COLOR](CaminhoAteAPasta,NomePasta));
  • E no final retornas o objecto
    Código:
    return treeNode1;
  • Não te esquecas que tens de actualizar a string CaminhoAteAPasta, senão vais entrar em ciclo infinito

E basicamente é só isso que tens de fazer......

Dois erros que me ocurreram, como existe pasta que não tens permissão para entrar comvem que tenhas um try catch para corrigires essas pasta, o outro erro que me ocorreu foi na string NomeDaPasta não ter '/' no fim .... depois tentava aceder a directorias com pastas coladas e obviamente não consegue abrir.....

Se o programa demorar uns minutos a abrir é normal... já o do stor demorava...

Existem outras maneiras de fazer.... podes por exemplo aproveitar os eventos da treeview para abrir conforme os clicks nas pastas....
 
Última edição:
O dark_splinter já disse tudo. Recursividade ou o evento PopulateOnDemand dos Nodes.
Já usei várias vezes TreeView em ASP.NET, e prefiro sempre criar o meu algoritmo com recursividade.
 
ehh.... já tás aqui .... :x2:
Fiz isso hoje na aula.....
Tens de usar recursividade.....
A logica é seguinte:

  • Inseres a raiz da directoria na treeview
    Código:
    treeView1.Nodes.Add(@"C:\");
  • Depois no LOOP que usares para ir buscar a informação de pasta fazes
    Código:
    treeView1.Nodes[0].Nodes.Add([COLOR=Navy]FuncaoRecursiva[/COLOR](CaminhoAteAPasta,NomePasta));
  • Depois a função que vais defenir (FuncaoRecursiva) tem de devolver um objecto do tipo TreeNode , dentro dessa função vais fazer o seguinte:
  • Vais buscar a informação das pastas que estão dentro dessa pasta (Aproveitas a string CaminhoAteAPasta que passaste na função)
  • Depois crias um objecto do tipo TreeNode e no construtor passas o nome da pasta com que entraste na função
    Código:
    TreeNode treeNode1 = new TreeNode(NomePasta);
  • Voltas a fazer historia do LOOP para ver as pasta e dentro do LOOP e metes
    Código:
    treeNode1.Nodes.Add([COLOR=Navy]FuncaoRecursiva[/COLOR](CaminhoAteAPasta,NomePasta));
  • E no final retornas o objecto
    Código:
    return treeNode1;
  • Não te esquecas que tens de actualizar a string CaminhoAteAPasta, senão vais entrar em ciclo infinito

E basicamente é só isso que tens de fazer......

Dois erros que me ocurreram, como existe pasta que não tens permissão para entrar comvem que tenhas um try catch para corrigires essas pasta, o outro erro que me ocorreu foi na string NomeDaPasta não ter '/' no fim .... depois tentava aceder a directorias com pastas coladas e obviamente não consegue abrir.....

Se o programa demorar uns minutos a abrir é normal... já o do stor demorava...

Existem outras maneiras de fazer.... podes por exemplo aproveitar os eventos da treeview para abrir conforme os clicks nas pastas....


Obrigado!

PS: já sabes, o pessoal recorre sempre aqui á tech para resolver os problemas :P
 
Back
Topo