Jump to content

Selecionar pasta da treeview automaticamente


metaclay
 Share

Recommended Posts

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

Link to comment
Share on other 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ó.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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

    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

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.