为项目添加右键菜单

问题描述 投票:0回答:5

我一直在寻找单个项目的简单右键菜单。例如,如果我右键单击一张图片,我想要一个小菜单来显示我自己的标签:添加、删除等。如果有人可以提供帮助,我将不胜感激。

感谢您的浏览。

这是完整的代码:

    ContextMenu cm = new ContextMenu();             
    cm.MenuItems.Add("Item 1", new EventHandler(Removepicture_Click));             
    cm.MenuItems.Add("Item 2", new EventHandler(Addpicture_Click));              
    pictureBox1.ContextMenu = cm; 
c# winforms visual-studio menu right-click
5个回答
82
投票

将上下文菜单添加到表单,然后将其分配到 ContextMenuStrip 下的控件属性中。

ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1");
cm.MenuItems.Add("Item 2");
    
pictureBox1.ContextMenu = cm;

41
投票

这是对这个问题的全面回答。我这样做是因为这个页面在谷歌搜索结果中排名靠前,而且答案没有提供足够的细节。本文假设您有能力使用 Visual Studio C# 表单。这是基于VS2012的。

  1. 只需将 ContextMenuStrip 拖到表单上即可开始。它只会将其放在左上角,您可以在其中添加菜单项并根据需要重命名。

  2. 您必须查看代码并自行在表单上输入事件。为相关项目创建一个鼠标按下事件,然后为其分配一个右键单击事件,如下所示(我将 ContextMenuStrip 称为“rightClickMenuStrip”):

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
    switch (e.Button)
        {
            case MouseButtons.Right:
            {
                rightClickMenuStrip.Show(this, new Point(e.X, e.Y));//places the menu at the pointer position
            }
            break;
        }
    }
    
  3. 手动将事件处理程序分配给form.designer(您可能需要为System.Windows.Forms添加一个“using”;您可以解决它):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
    
  4. 此时所需要做的就是简单地双击每个菜单项,并以与任何其他按钮相同的方式为每个单击事件执行所需的操作。

这是该操作的基本代码。显然,您可以修改它以适应您的编码实践。


21
投票

如果您使用 Visual Studio,还有一个 GUI 解决方案:

  1. 从工具箱添加一个 ContextMenuStrip
  2. 选择上下文菜单并添加右键单击项目
  3. 对于每个项目,将点击事件设置为相应的功能
  4. 选择右键菜单将连接的表单/按钮/图像/等(任何项目)
  5. 将其 ContextMenuStrip 属性设置为您创建的菜单。

3
投票

刚刚搞乱了这个,知道 e.X / e.Y 点是相对于控件是有用的,所以如果(像我一样)您要向列表视图或类似的东西添加上下文菜单,您将需要调整它与形式的起源。在下面的示例中,我在 x/y 上添加了 20,以便菜单显示在光标下方稍微靠右的位置。

cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20));

2
投票

使用 Visual Studio 非常简单 正如 Dorku 所说,但是我一步一步更详细地说明了

  • 转到视图->工具箱

  • 在搜索工具箱中输入“上下文”

  • 双击工具箱上的“ContextMenuStrip”

  • 右键单击表单上的“ContextMenuStrip1”,转到属性并根据需要重命名 例如:“ContextMenuStripReports”

  • 右键单击“ContextMenuStripReports”转到属性并单击省略号 (...按钮)并添加菜单项如下

  • 工具条菜单项1

  • 工具条菜单项2

  • 打开你的form.Designer.cs搜索toolStripMenuItem1添加到下面
    this.toolStripMenuItem1.Click += ToolStripMenuItem1_Click;

  • 对 toolStripMenuItem2 执行相同操作

  • 打开您的form.cs

    private void ToolStripMenuItem1_Click(object sender, System.EventArgs e)     
    {    }    
    private void ToolStripMenuItem2_Click(object sender, System.EventArgs e)     
    {    }   
    
  • 右键单击表单->属性
    将 ContextMenuStrip 属性设置为 ContextMenuStripReports

© www.soinside.com 2019 - 2024. All rights reserved.