01/07/10 11:31
bury
Salve a tutti,
ho difficoltà a recuperare il valore di un nodo figlio all'interno di un treeview in window form. Con l'evento onclicknode riesco a recuperare solo il nodo padre ma selezionando i figli non riesco a recuperare i valori. Vi sarei molto grato se qualcuno mi aiutasse.
Grazie
aaa
01/07/10 13:08
Il Totem
L'evento NodeMouseClick viene generato quando si fa click su un nodo, indipendetemente dal fatto che esso sia child o parent rispetto a qualche altro nodo. Dovresti mostrare il codice che usi, potrebbe essere scorretto.
aaa
12/07/10 9:53
bury2
Grazie per la risposta il codice che utilizzo è:
if (treeView1.Nodes[e.Node.Index].Tag != null)
{
node5 = treeView1.Nodes[e.Node.Index].Tag.ToString();
if (treeView1.SelectedNode.Parent != null)
{
node5 = treeView1.SelectedNode.Nodes[e.Node.Index].Tag.ToString();
}
prodotto_selezionato_tree = node5.ToString();
label13.Text = prodotto_selezionato_tree.ToString();
}
e ottengo sempre il tag del nodo padre.....apparte che treeView1.SelectedNode.Nodes[e.Node.Index].Tag.ToString() non me lo accetta, ma non sto riuscendo a trovare la sintassi giusta.
aaa
23/07/10 15:03
bury
Ciao e grazie ancora per la risposta ma proprio non riesco a recuperare valori dei figli:
così recupero il tag sul livello principale
node5 = treeView1.Nodes[e.Node.Index].Tag.ToString();
ma non riesco a fare lo stesso per i figli.
Spero in una tuo aiuto.
Grazie ancora
aaa
25/07/10 7:40
Il Totem
Postato originariamente da bury:
Ciao e grazie ancora per la risposta ma proprio non riesco a recuperare valori dei figli:
così recupero il tag sul livello principale
node5 = treeView1.Nodes[e.Node.Index].Tag.ToString();
ma non riesco a fare lo stesso per i figli.
Spero in una tuo aiuto.
Grazie ancora
No, tu così non ottieni sempre il nodo al livello principale. Se fai click su un nodo, e.Node è il nodo cliccato. Se tale nodo è di livello 0, sei a posto, è un nodo principale. Se è di livello superiore, allora quel codice è logicamente inconcludente.
Infatti, ammettiamo ci siano 4 nodi root, ognuno con 10 figli. Ammettiamo inoltre che l'utente faccia click sul settimo nodo figlio del terzo nodo root. Ora, e.Node.Index è 6, poiché il nodo cliccato è il settimo figlio. Tu cerchi quindi il nodo root di indice 6, che non esiste, perchè i root sono 4.
Per farla semplice, se e.Node.Parent = Nothing, allora e.Node è un nodo root (livello 0). In caso contrario è un nodo figlio, quindi tutti i suoi "fratelli" (ossia i nodi di livello uguale) sono dati da e.Node.Parent.Nodes.
Ultima modifica effettuata da Il Totem 25/07/10 7:41
aaa