>Ciao a tutti, sono nuovo del forum.mi sono appena iscritto.
>ho il seguente problema e spero mi diate una mano perchè non
>riesco ad uscirne fuori:
Ciao e benvenuto nella community!
>ho creato una TreeView e quando clicco sui nodi faccio comparire
>un messaggio.
>il problema è per esempio che se cambio nodo e poi ritorno sul
>nodo figlio il messaggio mi compare più volte
>come se entrasse piu volte nel secondo if, cioè mi compare più
>volte "sono il figlio"
>
>private void treeView1_AfterSelect(object sender, TreeViewEventArgs
>e)
>{
>treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(NodeMouseClick);
>}
>
>
>public void NodeMouseClick(object sender, TreeNodeMouseClickEventArgs
>e)
>{
>
>if (e.Node.Name == "Nodo0")
>{
>MessageBox.Show("sono il padre");
>}
>if (e.Node.Name == "Nodo1")
>{
>MessageBox.Show("sono il figlio");
>}
>}
Beh, non capisco perchè non utilizzi gli eventi messi a disposizione del componente, non c'è bisogno di aggiungere un'evento ogni qual volta l'evento afterSelect viene richiamato!Questa è la motivazione per la quale ad ogni click sul nodo corrispondono n + 1 apparizioni della messagebox.
Ti faccio un'esempio :
public void NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Name == "Nodo0")
{
MessageBox.Show("sono il padre");
}
if (e.Node.Name == "Nodo1")
{
MessageBox.Show("sono il figlio");
}
}
Con questa routine ad ogni click sul nodo corrisponde una ed una sola messagebox.
Ovviamente devi aggiungere nel Form.Designer.cs all'evento NodeMouseClick la routine sopra descritta :
;)
------------------------------------------
Ignazio Catanzaro
http://blogs.dotnethell.it/swdev/