TreeView + ContextMenu [Résolu]

cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 8 févr. 2006 à 18:28 - Dernière réponse : cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention
- 9 févr. 2006 à 09:46
Bonjour à tous,

J'ai un Treeview avec un contextMenu et je voudrais que quand on clique avec le bouton gauche de la souris sur un TreeNode le contextMenu apparaissent et que le menu à l'interieur se mette enabled ou disabled suivant si le node séléctionné est coché ou non, donc j'ai fais dans l'évenement MouseUp :

if (e.Button == MouseButtons.Right)
{
t.SelectedNode = t.GetNodeAt(e.X, e.Y);

if ((t.SelectedNode.Checked))
menu_ouvrir->Enabled = true ;
else
menu_ouvrir->Enabled= false ;
}

Ben donc ca marche.... mais à moitié. Si je suis sur un node coché et que je clique avec le bouton droit de la souris sur un autre node qui est décoché celui là; le menu ouvrir est Enabled il faut que je rereclique avec le bouton droit de la souris sur ce même node pour que le menu_ouvrir se mette enfin en Disabled. On dirait que t.SelectedNode = t.GetNodeAt(e.X, e.Y); ne se produit pas quand je clique avec le bouton droit de la souris sur un node.

Quelqun serait t'il pourquoi ?

Par avance, merci.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 8 févr. 2006 à 18:58
3
Merci
Salut,

C'est normal : le menu est affiché avant que l'event MouseUp soit levé, donc l'affichage du changement est toujours décalé d'un clic.
La solution est de ne pas associer le menu au contrôle mais de gérer toi même son affichage.
Sinon n'oublie pas de tester la nullité de t.SelectedNode, GetNodeAt peut très bien retourner null si tu clique ailleurs que sur un noeud.

if (e.Button == MouseButtons.Right)
{
Point pt = new Point(e.X, e.Y);
t.SelectedNode = t.GetNodeAt(pt);


if (t.SelectedNode != null && t.SelectedNode.Checked)
menu_ouvrir.Enabled = true;
else
menu_ouvrir.Enabled = false;


menu.Show(t, pt);
}

/*
coq
MVP Visual C#
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de cs_coq
cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 9 févr. 2006 à 09:46
0
Merci
ben justement j'avais des "null references exceptions", maintenant je sais pourquoi , merci de ta réponse.
Commenter la réponse de cs_emmanuel9

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.