向项目添加右键菜单

时间:2012-03-22 14:06:00

标签: c# winforms visual-studio menu right-click

我一直在搜索单个项目的简单右键菜单。例如,如果我右键单击图片,我想要一个小菜单来提出我自己的标签:添加,删除等。如果有人可以提供帮助,我会非常感激。

感谢您的光临。

以下是完成的代码:

    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; 

4 个答案:

答案 0 :(得分:67)

将上下文菜单添加到表单,然后在ContextMenuStrip下的控件属性中指定它。希望这有助于:)。

希望这会有所帮助:

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

pictureBox1.ContextMenu = cm;

答案 1 :(得分:22)

这是对这个问题的全面回答。我这样做是因为此页面在Google搜索结果中占据了很高的位置,答案并没有详细说明。本文假设您有能力使用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. 此时所需要的只是双击每个菜单项,并按照与任何其他按钮相同的方式为每个点击事件执行所需的操作。

  5. 这是此操作的基本代码。您可以明显地修改它以适应您的编码实践。

答案 2 :(得分:12)

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

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

答案 3 :(得分:0)

刚刚搞砸了这个,知道eX / eY点相对于控件是有用的,所以如果(就像我一样)你正在将一个上下文菜单添加到listview或类似的东西,您需要使用表单的来源进行调整。在下面的示例中,我在x / y中添加了20,以便菜单显示在右侧和光标下方。

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