2013-05-11 25 views
5

Sto lavorando a un progetto VB.NET 2010 con un controllo ad albero. La prima cosa che sto cercando di capire è come inserire un nuovo nodo subito dopo il nodo attualmente selezionato, e quindi rendere quel nodo appena inserito il nodo selezionato . Posso inserire il nuovo nodo senza problemi, ma non riesco a capire come renderlo il nodo "selezionato". La riga commentata qui sotto è la parte su cui mi sto impiccando.TreeView VB.NET - selezionando dinamicamente un nodo dopo che è stato inserito o spostato?

Private Sub AddNode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddNode.Click 

    If Not treeview1.SelectedNode Is Nothing Then 
     treeview1.Nodes.Insert(treeview1.SelectedNode.Index + 1, TextBox1.Text) 
     treeview.SelectedNode = treeview1.Nodes.Item(treeview1.SelectedNode.Index + 1) ' <-- I thought this would work, but it doesn't 
    End If 

End Sub 

In secondo luogo, sto utilizzando il codice seguente per spostare un nodo selezionato verso l'alto (in relazione ad altri nodi). Funziona bene, ma simile al problema sopra, non riesco a capire come mantenere quel nodo come il nodo "selezionato" dopo che è stato spostato.

Private Sub NodeUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NodeUp.Click 

    Dim CurrentIndex As Integer = treeview1.SelectedNode.Index 
    Dim CurrentNode As TreeNode = treeview1.SelectedNode 
    treeview1.SelectedNode.Remove() 
    treeview1.Nodes.Insert(CurrentIndex - 1, CurrentNode) 

End Sub 

Questo deve essere semplice, ma sto wracking mio cervello cercando di capire come, quindi vorrei apprezzare un po 'di comprensione qui.

Grazie!

risposta

4

Per l'impostazione del nodo selezionato in un TreeView si chiama TreeView.SelectedNode per il TreeNode che si desidera selezionare.

Ora che abbiamo stabilito che, verso il basso per i vostri esempi:

Quando si chiama TreeView.Nodes.Insert utilizzando il sovraccarico avete (intero, stringa) è effettivamente ottenere un oggetto TreeNode rispedito al mittente. Quindi, se si modifica il campione su

Private Sub AddNode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddNode.Click 

    If Not treeview1.SelectedNode Is Nothing Then 
     Dim NewNode as TreeNode = treeview1.Nodes.Insert(treeview1.SelectedNode.Index + 1, TextBox1.Text) 
     treeview.SelectedNode = NewNode 
    End If 

End Sub 

quindi selezionare il nodo appena creato.

tuo secondo esempio solo bisogno di avere una linea aggiunto ad esso:

Private Sub NodeUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NodeUp.Click 

    Dim CurrentIndex As Integer = treeview1.SelectedNode.Index 
    Dim CurrentNode As TreeNode = treeview1.SelectedNode 
    treeview1.SelectedNode.Remove() 
    treeview1.Nodes.Insert(CurrentIndex - 1, CurrentNode) 
    treeview1.SelectedNode = CurrentNode 

End Sub 

questo è tutto lavorativi dal compilatore del cervello al momento come non ho accesso a Visual Studio per provarlo, quindi per favore Fammi sapere se hai problemi.

+0

Grazie Adrian, entrambe le soluzioni funzionano perfettamente! :) Mi sento un po 'stupido ora dopo aver visto la risposta al mio secondo esempio ... maggiore "doh!" momento, lol. – NotQuiteThereYet

+0

@NotQuiteThereYet Non c'è problema: D Questo è il modo in cui apprendiamo: commettiamo errori e vediamo dove abbiamo sbagliato. Credimi, mi sono fatto degli errori più stupidi di così prima. – Adrian

Problemi correlati