我希望能够右键单击图像并显示菜单。然后,当我单击其中一项时,我希望它指向一个类:
private void link1add_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Add", HandleContextMenuAdd);
cm.MenuItems.Add("Remove", HandleContextMenuRemove);
link1add.ContextMenu = cm;
}
}
private void HandleContextMenuAdd(object sender, EventArgs e)
{
MessageBox.Show("Adding");
}
private void HandleContextMenuRemove(object sender, EventArgs e)
{
MessageBox.Show("Removing");
}
自首次发布以来已对代码进行了编辑。
感谢你的帮助。
最佳答案
lambda表达式呢?
cm.MenuItems.Add("Item 2", (_, __) => {
if (...) ReadDocument();
});
要么
cm.MenuItems.Add("Item 2", (_, __) => { this.myClassInstance.DoSomething(); });
或者,您可以创建带有预期事件处理程序签名的方法:
cm.MenuItems.Add("Item 2", HandleContextMenuClick);
private void HandleContextMenuClick(object sender, EventArgs e)
{
if (...) ReadDocument();
}
该方法不必在同一类中(例如,您可以编写
this.myClassInstance.HandleContextMenuclick
)。但是我会将其他类的实现细节隐藏起来,以避免不必要的耦合。关于c# - 右键单击菜单,然后指向一个类的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9825226/