2010-05-19 5 views
1

Je voudrais déterminer l'index de l'élément de menu contextuel sélectionné. Mais je ne veux pas construire une eventhandler unique pour chaque élément de menu ... Comment puis-je faireComment obtenir l'index d'un élément de menu contextuel de déclenchement

MenuItem mi= StatusContextMenu.MenuItems.Add("Set option"); 
    mi.MenuItems.Add(0,new MenuItem("Set to A", new EventHandler(SetLetter))); 
    mi.MenuItems.Add(1,new MenuItem("Set to B", new EventHandler(SetLetter))); 
    mi.MenuItems.Add(2,new MenuItem("Set to C ", new EventHandler(SetLetter))); 
    mi.MenuItems.Add(3,new MenuItem("Set to D", new EventHandler(SetLetter))); 

private void SetLetter(object sender, System.EventArgs e) 
{ 
    index = ???? 
} 

C#, .net 2.0

Répondre

3

Vous pouvez lancer le paramètre "expéditeur" (CAST à MenuItem) pour trouver l'index dans la collection mi.MenuItems.

Sinon, je mis en place les gestionnaires d'événements en utilisant des fonctions anonymes ...

Par ex

mi.MenuItems.Add(0,new MenuItem("Set to A", (s, e) => SetLetter("A")); 

Ensuite, vous avez SetLetter comme:

private void SetLetter(string letterToSetTo) 
{ 
} 
+0

qui est fantastique ... Je ne savais pas que je pouvais le faire ... qui ouvre possibilitys dans d'autres domaines. Je vous remercie – fishhead

Questions connexes