c# - 右键单击菜单,然后单击指向类的项目

标签 c# winforms menu right-click

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

    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/

相关文章:

qt - 如何在Qt中动态添加菜单

android - ActionBar 共享项目产生 "Android System"thingy

c# - 我表单上的一些控件没有出现在 foreach 循环中

c# - 如何在不实际下载文件的情况下判断 FTP 上的文件是否与本地文件相同?

c# - 在 ListView 控件中隐藏 ID 列

c# - "A call to a PInvoke function has unbalanced the stack"

css - 在 CSS 中动态调整菜单大小

javascript - ASP.NET Core Razor 页面 - 获取要在 Chart.js 图表上显示的列表数据

c# - 在运行时以静态方法获取当前类?

c# - 使用 C# 更新另一台机器(共享文件夹/网络)上存在的文件(web.config)中的值