Bonjour à tous,
Depuis quelques jours, je galérais pour faire fonctionner un ContextMenu et après de long effort, laedit a enfin réussi à trouver une solution.
Pourquoi je vous parle de ça ? Car ça a un rapport direct avec mon problème actuel. En effet, une fois le problème de la remontée de l'arborescence du ContextMenu résolu, un autre problème est apparu... Visual Studio ne retrouve pas le SourceControl du ContextMenu.
Le ContextMenu, le voici :
Il est activé quand je fais un clic droit sur une PictureBox et le code suivant s'effectue quand je clique sur un ToolStripMenuItem de "Niveau 2" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ContextMenu --> ToolStripMenuItem 1 ---> ToolStripMenuItem 1 ---> ToolStripMenuItem 2 ---> ... ---> ToolStripMenuItem n --> ToolStripMenuItem 2
Et là, j'ai un beau plantage de l'application car la variable id_PB vaut null. Il ne "sait pas" remonter au SourceControl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void PoseCarte_Click(object sender, EventArgs e) { ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem; ToolStripMenuItem TSMI = tsddi.Owner as ToolStripMenuItem; ContextMenuStrip id = TSMI.Owner as ContextMenuStrip; PictureBox id_PB = id.SourceControl as PictureBox; }
Ce qui est étonnant car autre part dans mon code, j'ai ceci :
Et là, pas de plantage. Le SourceControl est reconnu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 poserUneCarteToolStripMenuItem.Enabled = poserUneCarteToolStripMenuItem.HasDropDownItems; ContextMenuStrip Item = sender as ContextMenuStrip; PictureBox Item_PB = Item.SourceControl as PictureBox; retirerLaCarteToolStripMenuItem.Enabled = Item_PB.Image != null;
Une idée ?
Partager