Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio Neto

[Resolvido] Varrer nós filhos de TreeView

Recommended Posts

Bom dia.

 

Finalmente tomei vergonha na cara e estou migrando para plataforma .Net, hehe.

 

Estou usando um treeview em meu projeto com mais ou menos a seguinte estrutura:

 

-Nome

--Item1

---SubItem1

---SubItem2

---SubItem3

---SubItem4

---SubItem5

--Item2

---SubItem1

---SubItem2

---SubItem3

---SubItem4

---SubItem5

 

Eu preciso, a cada x segundos, fazer uma varredura no hardware, verificar a situação de cada canal e atualizar os dados dos subitens da treeview.

 

Estava fazendo o projeto em VB6, e nele montei um for indo de 0 até o total de canais, mas em .Net isso não funcionou da mesma maneira. Pois parece que a cada nó filho ele zera os índices, então nesse caso ai por exemplo eu tenho 4 nós com índice 0 (Nome, Item1, SubItem1 e SubItem2).

 

Detalhe: em momento algum os canais serão selecionados, então não tenho como usar o SelectedNode para nada também.

 

Alguém sabe me ajudar?

 

Obrigado.

 

PS: Estou usando VS2010.

Compartilhar este post


Link para o post
Compartilhar em outros sites

For j = 1 To treeCanais.Nodes.Count
            If treeCanais.Nodes.Item(j).Tag <> "Placa" Then
                iCanal = CInt(Mid(treeCanais.Nodes.Item(j).Tag, 1, InStr(treeCanais.Nodes.Item(j).Tag, "-") - 1))
                iPlaca = CInt(Mid(treeCanais.Nodes.Item(j).Tag, InStr(treeCanais.Nodes.Item(j).Tag, "-") + 1))

                'Pega o estado do canal para exibir na tela
                ret = EstadoCanal(iPlaca, iCanal)
                Select Case ret.estado
                    Case 0
                        ValorCanal = "Livre"
                        Call cBD.adicionaCanaisUsando(-1)
                    Case 1
                        ValorCanal = "Chamando - " & ret.Teste
                        Call cBD.adicionaCanaisUsando(1)
                    Case 2
                        ValorCanal = "Atendeu, aguardando audio - " & ret.Teste
                    Case 3
                        ValorCanal = "Atendeu, reproduzindo audio  - " & ret.Teste
                End Select

                'Atualiza a árvore com os nomes e estado dos canais
                treeCanais.Nodes.Item(j).Text = ("Canal " & iCanal & ": " & ValorCanal)
            End If
        Next

Toda vez que j = 3 ele dá erro, pois acusa que treeCanais.Nodes.Count = 3.

Pelo que entendi, os nós filhos ele não computa nessa soma, apenas os pais.

 

 

Está vermelho de novo padrinho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a solução.

 

Esse novo treeview trabalha nó a nó isoladamente, mas temos como indicar qual o nó queremos trabalhar.

 

Abaixo um exemplo do código que consegui criar para chegar ao que preciso:

Dim no As TreeNode
        Dim noPai As TreeNode
        Dim noFilho As TreeNode

        TreeView1.Nodes.Clear()
        no = TreeView1.Nodes.Add("Teste")
        For i As Integer = 0 To 2
            noPai = no.Nodes.Add(i)
            For j As Integer = 0 To 4
                noFilho = noPai.Nodes.Add(j)
            Next
        Next

        For n As Integer = 0 To TreeView1.Nodes.Count - 1
            For p As Integer = 0 To TreeView1.Nodes(n).Nodes.Count - 1
                For f As Integer = 0 To TreeView1.Nodes(n).Nodes(p).Nodes.Count - 1
                    TreeView1.Nodes(n).Nodes(p).Nodes(f).Text = CInt(TreeView1.Nodes(n).Nodes(p).Nodes(f).Text) + 1
                Next
            Next
        Next

Obrigado mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.