Selecionar pasta da treeview automaticamente - Visual Basic .NET - Portugal-a-Programar
Selecionar pasta da treeview automaticamente
Por metaclay, 13 de Novembro de 2009 em Visual Basic .NET
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
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ó.
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.
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
Dim TextoDoNode As String = "Node7"
If N.Text = TextoDoNode Then TreeView1.SelectedNode = N
If N.Nodes.Count > 0 Then EscavaNodes(N, TextoDoNode)
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)
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?")
Oh lol. Assim fiquei na mesma
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.
Usas .Net Framework 3.5 ?
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.
Mas o teu problema é carregar os dados ou seleccionar um node na treeview ?
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.
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...