我希望能够右键单击图像并显示菜单。然后,当我单击其中一项时,我希望它指向一个类:

    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/

10-12 00:17
查看更多