none
Como preencher um TreeView com um array de strings? RRS feed

  • Pergunta

  • "Windows\\", 
    "Windows\\system32\\", 
    "Windows\\system32\\etc\\",
    "Test\\", 
    "Test\\subpasta1\\", 
    "Test\\subpasta1\\subpasta2\\"
    "Test\\subpasta1\\subpasta2\\subpasta3\\"
    Oi to tentando fazer um algoritmo em C# que adiciona esse array de strings acima em um controle TreeView, respeitando quem será item e sub item. Nesse caso, o TreeView teria 2 itens roots (Windows e Test) e cada um com as suas respectivas subpastas. O problema é que ta difícil fazer esse código de forma genérica (para que possa funcionar com quaisquer strings).

    Tenho pensado muito e não sai nada, por favor alguém poderia dar o restante do código?

    Código:
    private void button1_Click(object sender, EventArgs e) { string[] StrArray={ "Windows\\", "Windows\\system32\\", "Windows\\system32\\etc\\", "Test\\", "Test\\subpasta1\\", "Test\\subpasta1\\subpasta2\\", "Test\\subpasta1\\subpasta2\\subpasta3\\"}; int i = 0; while(i < StrArray.Count()) { TreeNode tnParent = tv.Nodes.Add(StrArray[i]); i++; } }

    segunda-feira, 9 de maio de 2011 23:08

Respostas

  • Como vai DeathPum,

    antes de mais nada, aqui ninguém " dá " alguma coisa, nós simplesmente compartilhamos conhecimento, pelo prazer que temos no que fazemos.

    Segue abaixo um snippet genérico para você implementar na sua solução:

    private void Form1_Load(object sender, EventArgs e)
        {
          List<string> lista = new List<string>{
    					              @"Windows\system32\etc",
    					              @"Test\subpasta1\subpasta2\subpasta3"};
    
          treeView1.PathSeparator = @"\\";
          char pathSeparator = '\\';
    
          foreach (string item in lista)
          {
            string subPathAgg = string.Empty;
    
            TreeNode lastNode = null;
    
            foreach (string subPath in item.Split(pathSeparator))
            {
              subPathAgg += subPath + pathSeparator;
              TreeNode[] nodes = treeView1.Nodes.Find(subPathAgg, true);
    
              if (nodes.Length == 0)
              {
                lastNode = lastNode == null ? treeView1.Nodes.Add(subPathAgg, subPath) : lastNode.Nodes.Add(subPathAgg, subPath);
              }
              else
              {
                lastNode = nodes[0]; 
              }
            }
          }
        }
    

     

    Se a resposta foi útil pra você, colabore com o fórum marcando como resposta esta sugestão, obrigado!

    Júlio Cesar Cosmo, MCP, MCTS - Influenciador Sharepoint, Influenciadores Microsoft

    http://juliocosmo.wordpress.com/

     

    • Marcado como Resposta Dhanhel Shuwitz terça-feira, 10 de maio de 2011 03:06
    terça-feira, 10 de maio de 2011 02:27

Todas as Respostas

  • Como vai DeathPum,

    antes de mais nada, aqui ninguém " dá " alguma coisa, nós simplesmente compartilhamos conhecimento, pelo prazer que temos no que fazemos.

    Segue abaixo um snippet genérico para você implementar na sua solução:

    private void Form1_Load(object sender, EventArgs e)
        {
          List<string> lista = new List<string>{
    					              @"Windows\system32\etc",
    					              @"Test\subpasta1\subpasta2\subpasta3"};
    
          treeView1.PathSeparator = @"\\";
          char pathSeparator = '\\';
    
          foreach (string item in lista)
          {
            string subPathAgg = string.Empty;
    
            TreeNode lastNode = null;
    
            foreach (string subPath in item.Split(pathSeparator))
            {
              subPathAgg += subPath + pathSeparator;
              TreeNode[] nodes = treeView1.Nodes.Find(subPathAgg, true);
    
              if (nodes.Length == 0)
              {
                lastNode = lastNode == null ? treeView1.Nodes.Add(subPathAgg, subPath) : lastNode.Nodes.Add(subPathAgg, subPath);
              }
              else
              {
                lastNode = nodes[0]; 
              }
            }
          }
        }
    

     

    Se a resposta foi útil pra você, colabore com o fórum marcando como resposta esta sugestão, obrigado!

    Júlio Cesar Cosmo, MCP, MCTS - Influenciador Sharepoint, Influenciadores Microsoft

    http://juliocosmo.wordpress.com/

     

    • Marcado como Resposta Dhanhel Shuwitz terça-feira, 10 de maio de 2011 03:06
    terça-feira, 10 de maio de 2011 02:27
  • Fala aí Júlio César, muito obrigado pelo código cara, quebrou um galhão! Eu não gosto de ficar pedindo código pronto mas por causa dessa função aí ja tava quase desistindo do meu projeto (Vou poder dormir feliz agora).

    Valeu.

    terça-feira, 10 de maio de 2011 03:06
  • DeathPum,

    Estou movendo sua thread para o fórum de Windows Forms. Das próximas vezes que tiver alguma dúvida relacionada a essa tecnologia poste por lá.

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

     

    terça-feira, 10 de maio de 2011 03:21
    Moderador