Ciao ragazzi, esiste qualche funzione preconfezionata per cui, dando una stringa in ingresso (il nome del nodo che voglio cercare), scorra la treeview in cerca di quel nodo, ed in caso lo trova sposta il focus proprio su quel nodo??
Ciao ragazzi, esiste qualche funzione preconfezionata per cui, dando una stringa in ingresso (il nome del nodo che voglio cercare), scorra la treeview in cerca di quel nodo, ed in caso lo trova sposta il focus proprio su quel nodo??
Per trovare un nodo passata una stringa:
Vedi se basta.codice:treeView1.Nodes.Find("NomeNodo", false)
![]()
![]()
Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
Occhio per occhio uguale... occhio al quadrato
Uh, scusami, intendevo cercare il testo di un nodo, è la stessa cosa?
E' possibile trovare qualche esempio pronto all'uso in questa pagina.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Si l'avevo guardato, però quello mi pare restituisce un array di stringhe. Come posso gestirlo per fare in modo che il programma, una volta verificato che quel nodo esiste, apra la treeview proprio facendo vedere quel nodo?
No, non mi pare che vi sia da alcuna parte un array di stringhe restituito.Originariamente inviato da deb463is
Si l'avevo guardato, però quello mi pare restituisce un array di stringhe.![]()
In ogni caso, la lettura e la comprensione dell'articolo serve per capire come applicare un metodo, che poi va ovviamente adattato al proprio caso.
Prova a fare uno sforzo.![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
private void btn_SearchText_Click(object sender, EventArgs e)
{
string text = string.Empty;
text = txt_Text.Text;
bool b = true;
if (text != string.Empty)
{
try
{
TreeNode[] arr = treeView1.Nodes.Find(text, b);
for (i = 0; i < arr.Length; i++)
{
treeView1.SelectedNode = arr[i];
treeView1.SelectedNode.BackColor = Color.Blue;
}
}
catch { }
}
else
MessageBox.Show("Enter Text");
Grazie, questo esempio è molto calzante, però l'unico problema riguarda il fatto che viene ciclata solo la radice principale dell'albero, e i nodi figli non vengono considerati. Come si può risolvere? E' da una mattinata che cerco esempi ma non ho trovato nulla che riesca a ciclare l'intero albero con tutti i nodi padre-figli!
Per cercare il nodo ti do un suggerimento.
Tu parti dal nodo radice e cicli nei suoi nodi figli. Per ogni nodo figlio ontrolli se contiene la stringa che stai cercando, ma anche se a sua volta contiene dei nodi figlio. Se sì, allora lo aggiungi a una lista di nodi, la quale ti fornisce di volta in volta un nodo nel quale cercare. Alla fine di ogni iterazione, ricordati di cancellare dalla lista il nodo entro al quale hai ciclato.
Per sapere la lista dei nodi figli, usa la proprietà Nodes degli oggetti TreeNode.
Quando ne trovi uno, puoi utilizzare il metodo EnsureVisible per far espandere tutti i nodi necessari affinchè il TreeNode chiamante sia visibile
Spero di esserti stato utile, ciao![]()
Mi contraddico facilmente, ma lo faccio così spesso che questo fa di me una persona coerente [Caparezza]
Se la conoscenza crea problemi, non è con l'ignoranza che li si risolve [Isaac Asimov]
>>>Visita il mio blog<<<