• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

metaclay

Selecionar pasta da treeview automaticamente

12 mensagens neste tópico

Boas. Tenho uma treeview numa aplicação que está associada a uma listview, local onde mostra o conteudo da pasta selecionada na treeview. Gostava de saber como é possivel ter uma pasta predefenida que ao entrar no programa seja automaticamente selecionada na treeview e consequentemente mostre os documentos dessa pasta na listview. Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se a pasta por defeito estiver sempre na raíz da tree, basta correr a colecção Nodes até encontrar o valor que pretendes.

Se é possível que a pasta por defeito esteja alguns níveis acima, e como não podes adivinhar quantos níveis acima, terás de recorrer a uma função recursiva para procurar todos os nós da treeview.

Quando encontrares o nó, basta dares o nó à propriedade SelectedNode da TreeView.

Para listar os ficheiros, basta que tenhas o código de listar, ou uma chamada ao bloco de código de listar, no sub que "handles" o evento "SelectedIndexChanged" (ou coisa assim parecida).

Como estamos a seleccionar um nó, estamos a alterar o índice da selecção.

Finalmente, como estás a fazer uma selecção programática, para que o item seleccionado se veja seleccionado, das duas uma: ou tens a propriedade HideSelection para false ou chamas o método Select da treeview quando encontrares o nó.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao percebi bem o que disseste...

Eu quero que quando o programa abre, a pasta (por ex: dossier) seja logo selecionada e consequentemente mostre o seu conteudo na listview. Se calhar é melhor explicares-me com código para eu ver se entendo melhor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gosto mais de dar cana de pesca do que peixe, mas vá...

Vou-te despejar código. Faz o que pretendes, mas não é solução para o teu caso.

E para castigo, não to explico! :D :D

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim TextoDoNode As String = "Node7"

        For Each N As TreeNode In TreeView1.Nodes
            If N.Text = TextoDoNode Then TreeView1.SelectedNode = N
            If N.Nodes.Count > 0 Then EscavaNodes(N, TextoDoNode)
        Next

        TreeView1.Select()
    End Sub

    Private Sub EscavaNodes(ByVal NodeInicial As TreeNode, ByVal EncontraOQue As String)
        For Each N As TreeNode In NodeInicial.Nodes
            If N.Text = EncontraOQue Then TreeView1.SelectedNode = N
            If N.Nodes.Count > 0 Then EscavaNodes(N, EncontraOQue)
        Next
    End Sub

    Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        MsgBox("Ora bolas! Seleccionaste um node qualquer não foi?")
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já começaste por o mais básico?

Abrir um projecto novo, meter uma treeview num form, adicionar-lhe uns nodes com childs e exprimentar o código?

Analisas cada linha com step debug, vais vendo o que acontece, e chegas lá.

Se tiveres dúvidas em algum processamento em concreto, apita.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sergio ja experimentei e não é nada disso que preciso...

Eu estou aqui a questionar tanto porque não tenho formação sobre treeviews. É a 1ª vez que tou a trabalhar com este objecto.

jpaulino, sim uso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o teu problema é carregar os dados ou seleccionar um node na treeview ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Segundo percebi, queres seleccionar um treenode programaticamente, de uma treeview que representa a árvore de directórios de um disco, estando esse treenode a representar a tal pasta predefinida, certo?

Se é isso, eu continuo a impingir-te o bloco que te dei pois serve perfeitamente para o que pretendes, no que toca a descobrir alguma coisa na treeview.

Óbvio que não te vai fazer exactamente o que pretendes, mas ajuda na tarefa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jpaulino, o meu problema é que eu quero que abra o nodd que eu tenha predefenido quando o programa inicia.

Sergio, no teu codigo como é que posso definir o node que quero que mostre o seu conteudo na listview? Eu executei o código e aparece-me sempre a msgbox...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora