我希望能够右键单击图像并显示一个菜单。当我单击其中一项时,我希望它指向一个类:
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/