Comment connaitre le controle qui a ouvert le ContextMenuStrip à partir du ToolS [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,

j'ai déjà posé une question similaire ICI.
Mais cette fois, la solution donnée ne fonctionne pas.

Ici, je fais un clic droit sur un controle pour ouvrir un ContextMenuStrip. Dans les items de ce dernier ce trouve un bouton Configurer qui m'ouvre une fenetre de configuration. Cette fenetre doit prendre en parametre le controle initial qui a ouvert le menu pour le configurer.

Je recherche donc une technique pour connaitre ce controle à partir du ToolStripMenuItem.

Quelqu'un aurait-il une solution?

Dans la liste de l'aide intuitive de VS je n'ai rien vu qui puisse me faire remonter au contextMenuStrip afin de pouvoir recupérer le Control à partir de la variable SourceControl.

f.colo

1 réponse

Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
OK, j'ai trouvé, en fait j'y été mais je n'avais pas regardé plus profondément dans le débuggueur. Comme j'utilise les 'as' ca me donné toujours null lorsque je convertissé le SourceControl en mon UserControl CamContainerUC. En convertissant tout en une ligne, je ne savais pas où ca ne fonctionné pas.

Le problème venu du fait que le SourceControl été un Control de mon UserControl et non l'UserControl en lui même. J'ai donc demandé le Parent pour retrouver mon USerControl.

            ToolStripMenuItem tsmi = sender as ToolStripMenuItem;
            ContextMenuStrip cms = tsmi.GetCurrentParent() as ContextMenuStrip;
            CamContainerUC cam = (cms.SourceControl as PictureBox).Parent as CamContainerUC;
            ConfigForm form = new ConfigForm(cam);

En une ligne ca donne ca:

ConfigForm form = new ConfigForm((((sender as ToolStripMenuItem).GetCurrentParent() as ContextMenuStrip).SourceControl as PictureBox).Parent as CamContainerUC);
           
f.colo