1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Tree View em c#

Discussão em 'Programação' iniciada por Nody, 17 de Outubro de 2008. (Respostas: 5; Visualizações: 1933)

  1. Nody

    Nody Power Member

    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: 17 de Outubro de 2008
  2. Nody

    Nody Power Member

  3. ups

    ups Power Member

    Ja procuraste no google? De certeza que ja houve alguem a fazer exactamente o que pretendes.

    Melhor, porque nao usar o control de directorias que o IDE tras?
     
  4. dark_splinter

    dark_splinter Power Member

    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: 17 de Outubro de 2008
  5. SkylineGTR

    SkylineGTR Power Member

    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.
     
  6. Nody

    Nody Power Member


    Obrigado!

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

Partilhar esta Página