Comment savoir quel controle a ouvert le ContextMenu ? [Résolu]

Signaler
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Bonjour,

Dans mon programme, je crée à la volée plusieurs UserControl sur lesquels j'ajoute le meme ContextMenu.
J'ai intercepté l'evenement Opening du contextMenu pour, au lieu d'afficher réellement le context menu, afficher une form avec des paramètres de mon UserControl.

Malheureusement, le sender de la fonction Opening est le contextMenu et non le controle sur lequel on a fait le clic droit.

SAvez vous comment connaitre ce controle?

En fait, mon UserControl contient un activeX qui ne possède pas l'évenement clic, c'est pour celà que j'essais de passer par le contextMenu pour afficher une form.
Existe-t-il une autre solution que de détecter la position de la souris, scruter tous mes controles pour savoir si ils contiennent cette corrdonnée?

            for (int i = 0; i < nbIP; i++)
            {
                for (int j = 0; j < nbIP; j++)
                {
                    VLCCamControler vlcCamControler1 = new FloMultiCamViewer.VLCCamControler();
                    vlcCamControler1.Location = new System.Drawing.Point(j * Width, i * Height);
                    vlcCamControler1.Size = new System.Drawing.Size(Width, Height);
                    vlcCamControler1.ContextMenuStrip = this.contextMenuStrip1;
                    this.panel1.Controls.Add(vlcCamControler1);
                }
            }

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
            ContextMenuStrip contextMenu = (ContextMenuStrip)sender;
             //Comment savoir ici sur quel controle on a fait un clic droit ????
        }

f.colo

2 réponses

Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Salut, il me semble que l'objet ContextMenu a une proprité SourceControl, il faut alors caster le sender ((ContextMenu)sender).SourceControl
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
Effectivement, ca fonctionne.
j'avais passé toutes les propriétés mais j'ai loupé celle là.
Merci de l'info.

Par contre ca ne résoud pas mon probleme d'affichage d'une form, le contextmenu ne s'affiche pas lorsque l'activeX capture un flux video, donc je dois trouver uen autre solution :(.

Merci encore en tout cas.

f.colo