cs_Globinours
Messages postés65Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention26 août 2005
-
30 mai 2005 à 17:41
georgeduke
Messages postés167Date d'inscriptiondimanche 6 février 2005StatutMembreDernière intervention13 avril 2007
-
31 mai 2005 à 17:25
Voici mon code :
Je dispose d'un formulaire avec un treeView et un boutton!
Mon controle posséde un TreeNode appellé nodeSelected que j'utilise à
d'autre fin pas présenté ici mais je ne modifie pas cette valeur en
dehors de code!
Voici le code des évenement associé au controle.
private void treeView_AfterSelect(...)
{
MessageBox.Show("Select");
this.nodeSelected = this.treeView1.SelectedNode;
int nb = this.nodeSelected.getNodeCount(false);
MessageBox.Show(nb.ToString());
}
private void button_Click(...)
{
this.nodeSelected.Remove();
MessageBox.Show("Remove");
}
Quand je sélectionne un item et que je clique sur le boutton voilà ce quice passe:
Root
--- Node1
--- Node2
--- Node3
Affichage de "Select" Pourquoi il déclenche After_Select alors que je ne définit jamais la propriété SelectedNode.
Affichage de "3" Donc le noeud n'a pas été mis à jour.
Affichage de "Remove" Le noeud vient seulement d'être supprimé.
Bon comme ça a pas l'air d'un gros problème mais j'active des
propriétés dans mon after select suivant le nombre de fils du noueud
etc.
Avec ce bizarrerie les bouttons ne sont pas mis à jour.
georgeduke
Messages postés167Date d'inscriptiondimanche 6 février 2005StatutMembreDernière intervention13 avril 2007 31 mai 2005 à 08:29
Salut !
C'est tout a fait normal ! Dans la procédure de suppression d'un node
sélectionné, juste avant d'effectuer la suppression un évènement
AfterSelect sur le node sélectionné est automatiquement généré.
Et le comptage est donc effectué AVANT que la suppression ne commence.
Maintenant on peux contourner le probleme à partir de ton code, mais si
je pense qu'il serait mieux de choisir d'autres évènements...
par ex : en définissant un int "suppression" fixé par défaut à 0 et ainsi...
georgeduke
Messages postés167Date d'inscriptiondimanche 6 février 2005StatutMembreDernière intervention13 avril 2007 31 mai 2005 à 17:23
Re !
C'est vrai que ça peut paraître naze, mais j'ai une solution à te
proposer. On a vu que lorsqu'on "Remove() un node", ça met le focus
tout de suite sur le TreeNode et ça génère l'évennement AfterSelect qui
compte les nodes avant de procéder donc à la suppression.
On peut donc veiller à ne pas exécuter les lignes contenues dans
la fonction liée à l'AfterSelect lorsqu'est généré ce focus sur le
Treenode qui t'embête tant...
Donc en gros tu as juste besoin de présenter ton AfterSelect comme ça :