Connaitre objet pointé par un contextmenustrip dans un FlowLayoutPanel

cs_lala67 Messages postés 8 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 7 janvier 2008 - 18 déc. 2007 à 15:18
cs_lala67 Messages postés 8 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 7 janvier 2008 - 18 déc. 2007 à 16:45
Bonjour,

je suis novice en C# et j'ai un problème sur les contextmenustrip.

En fait j'ai crée une icone de type button sur laquelle j'ai mis un contextmenustrip. Cette icone je l'insere dans un FlowLayoutPanel.
                    Button icone = new Button();

                    icone.ContextMenuStrip = menuContextuel;

                   flowLayoutPanel1.Controls.Add(icone);

Mon problème c'est que je sais pas comment retrouver les informations de mon objet icone quand je fais un clic droit dessus?  Il faudrait que je puisse retrouver les informations  de l'icone(id,nom,etc)  pour pouvoir l'effacer du FlowLayoutPanel. 

                    private void menuContextuel_Opening(object sender, CancelEventArgs e)
                    {
          
                     ???????????
                    }

Merci d'avance

6 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
18 déc. 2007 à 15:38
Je n'ai pas de quoi vérifier sous la main, mais dans la méthode ou tu gère ton évènement, le paramètre "sender" est en fait ton ContextMenuStrip. Si tu le cast explicitement, tu devrais avoir accès à l'objet source (Sender ? Parent ? Owner ? -> un truc comme ça...). Par exemple :

ContextMenuStrip menuContextuel = sender as ContextMenuStrip ;
Button icone = menuContextuel.Parent as Button;

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_lala67 Messages postés 8 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 7 janvier 2008
18 déc. 2007 à 16:15
Merci de ton conseil j'ai essayé de faire ça

private void menuContextuel_Opening(object sender, CancelEventArgs e)
        {

            ContextMenuStrip toto = sender as ContextMenuStrip;
            Button icone = toto.Parent as Button;
            MessageBox.Show("test" + ((Button)icone).Name.ToString());
        }

L'icone possède un nom qui est son id.

icone.Name = Convert.ToString(id);

Mais j'ai un soucis, je n'arrive pas à afficher il me sort une NullReferenceexception

L'erreur doit etre tout con mais je vois pas.

Merci
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
18 déc. 2007 à 16:19
Vérifie en utilisant le debuger :
- est ce que toto est null ? (si c'est le cas c'est que le cast en ContextMenuStrip n'est pas bon -> regarde depuis le debuger quel est le type de sender)
- est ce que icone est null ? (de même, si c'est le cas c'est que le cast en Button n'est pas bon -> regarde depuis le debuger quel est le type de sender)
- est ce que toto.Parent est null ? -> si c'est le cas, alors cela veut dire que ce n'est pas cette propriété là qu'il faut utiliser, mais une autre (mais je n'ai pas la possibilité de chercher là, donc regarde dans les propriétés de toto s'il n'y en a pas une qui pointerait vers ton button)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_lala67 Messages postés 8 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 7 janvier 2008
18 déc. 2007 à 16:30
C'est bien toto.parent qui est null, je regarde si je trouve s'il y en a une qui pointe vers mon button

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
18 déc. 2007 à 16:36
Essayes SourceControl si ça existe.

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_lala67 Messages postés 8 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 7 janvier 2008
18 déc. 2007 à 16:45
Ca marche avec SourceControl j'obtiens bien le nom de mon button.

Merci beaucoup de ton aide
0
Rejoignez-nous