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?

Est-ce un WinForms ou WPF question?

OriginalL'auteur trycatch | 2011-04-11