C# = MenuItem.Cliquez sur gestionnaire - Obtenir l'objet le menu contextuel appartient?
Cela peut être incroyablement simple et je ne suis pas le voir parce que c'est la fin d'une longue journée, et si elle est, je m'excuse à l'avance.
J'ai un ensemble de Boutons lorsque cliqué avec le bouton droit de la pop un ContextMenu. Le menu a deux MenuItems, qui ont tous deux une fonction de gestionnaire de Clic attribué. Je suis le déclenchement de la ContextMenu de pop-up sur le droit de cliquer sur un bouton comme ceci:
Trop exemple simplifié:
public void InitiailizeButtonContextMenu()
{
buttonContextMenu = new ContextMenu();
MenuItem foo = new MenuItem("foo");
foo.Click += OnFooClicked;
MenuItemCollection collection = new MenuItemCollection(buttonContextMenu);
collection.Add(foo);
}
public void OnButtonMouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
//left click stuff handling
if (e.Button == MouseButtons.Right)
buttonContextMenu.Show((Button)sender, new Point(e.X, e.Y));
}
public void OnFooClicked(object sender, EventArgs e)
{
//Need to get the Button the ContextMenu .Show'd on in
//OnButtonMouseClick... thoughts?
}
ContextMenu buttonContextMenu;
J'ai besoin d'être en mesure d'obtenir le Bouton qui a déclenché le ContextMenu à apparaître DANS le gestionnaire de Clic pour le MenuItem, ou de l'obtenir d'elle en quelque sorte. MenuItem.Cliquez EventArgs, donc rien d'utile. Je lance object sender retour à MenuItem mais je ne peux pas trouver quelque chose qui me dit que ce qu'il fait de la pop. Est-ce possible?
OriginalL'auteur trycatch | 2011-04-11
Vous devez vous connecter pour publier un commentaire.
Utiliser le ContextMenu.SourceControl propriété, il vous donne une référence à l'occurrence de Bouton de retour.
Dans le cas où quelqu'un comme moi qui a besoin de cela pour wpf, devraient utiliser PlacementTarget propriété: Button btn = (Bouton)((ContextMenu)((MenuItem)de l'expéditeur).Parent).PlacementTarget;
OriginalL'auteur Hans Passant
Dans l'extrait de code ci-dessus, lorsque vous appelez la méthode show de
buttonContextMenu
, vous passez de l'objet bouton pourbuttonContextMenu
lorsque vous cliquez sur le bouton.Pour accéder au bouton dans le OnFooClicked méthode tout simplement jeté l '"expéditeur" de retour à un bouton.
*Je ne sais pas si MenuItem est le bon casting mais il devrait être le long de ces lignes.
Oups, désolé. Oui, ça ne marchera pas. Vous devriez être en mesure de référence de la société Mère, et qui sera votre bouton. Désolé.
Parent de MenuItem est Menu.
Ok, merci =D
OriginalL'auteur Kyle Uithoven
Si vous utilisez ContextMenuStrip et ToolStripItem, plutôt que de ContextMenu et MenuItem, vous aurez besoin de:
Régulière d'un ContextMenu et MenuItem (à partir de trycatch commentaire de Hans Passant du post):
OriginalL'auteur Mark Gilbert
OriginalL'auteur Erv Walter
Je ne suis pas 100% sur de ce - son de code que j'ai écrit environ 2 ans, mais j'espère que ça vous permet de vous déplacer sur cette.
OriginalL'auteur Chuck Savage
OriginalL'auteur Dirk