這可能非常簡單,我沒有看到它,因爲這是漫長一天的結束,如果是我提前道歉。C#= MenuItem.Click處理程序 - 獲取上下文菜單所屬的對象?
我有一組按鈕,當右鍵單擊時彈出一個ContextMenu。該菜單有兩個MenuItem,它們都有一個Click處理函數分配。我觸發文本菜單彈出按鈕上的右鍵像這樣:
過於簡化的例子:
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;
我需要能夠得到觸發文本菜單的按鈕在MenuItem的Click處理程序中彈出,或以某種方式獲取它。 MenuItem.Click採用EventArgs,因此在那裏沒有用。我可以將對象發送者重新映射回MenuItem,但是我找不到任何能告訴我是什麼讓它彈出的東西。這可能嗎?
這是WinForms或WPF的問題嗎? – 2011-04-12 00:03:11