Это может быть невероятно просто, и я не вижу этого, потому что это конец долгого дня, и если это так, я заранее прошу прощения.
У меня есть набор кнопок, которые, когда правильнощелкнул всплывающее контекстное меню.Меню имеет два элемента MenuItem, каждому из которых назначена функция обработчика щелчка.Я запускаю ContextMenu при щелчке правой кнопкой мыши по такой кнопке:
Слишком упрощенный пример:
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;
Мне нужно иметь возможностьполучить кнопку, которая вызвала ContextMenu для всплывающего в обработчике Click для MenuItem, или получить его как-нибудь.MenuItem.Click принимает EventArgs, поэтому ничего полезного там нет.Я могу привести объект-отправитель обратно в MenuItem, но не могу найти ничего, что бы сообщало мне, что заставило его всплыть.Это возможно?