为项目添加右键菜单

Posted

技术标签:

【中文标题】为项目添加右键菜单【英文标题】:Adding a right click menu to an item 【发布时间】:2012-04-07 02:36:51 【问题描述】:

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

感谢收看。

这是完整的代码:

    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; 

【问题讨论】:

【参考方案1】:

在表单中添加一个上下文菜单,然后在 ContextMenuStrip 下的控件属性中分配它。希望这会有所帮助:)。

希望这会有所帮助:

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

pictureBox1.ContextMenu = cm;

【讨论】:

@Marshal 我没有得到,但快速搜索显示了方法:***.com/questions/5789023/… 当用户点击 Item1 时如何创建事件? 如何处理菜单项的事件...比如知道它是第 1 项还是第 2 项? 要添加事件,您只需将新的事件处理程序动态分配给 menuItem。 MenuItem 具有构造函数(字符串文本,EventHandler OnClick),因此您可以添加带有事件的新菜单项,例如 cm.MenuItems.add(new MenuItem("Item 1", new EventHandler(item1_Click)));【参考方案2】:

这是对这个问题的全面回答。我这样做是因为此页面在 Google 搜索结果中的排名很高,而且答案不够详细。这篇文章假定您能够胜任使用 Visual Studio C# 表单。这是基于VS2012的。

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

    您必须自己查看代码并在表单上输入事件。为有问题的项目创建一个鼠标按下事件,然后为它分配一个右键单击事件(我已将 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;
        
    
    

    手动将事件处理程序分配给 form.designer(您可能需要为 System.Windows.Forms 添加“使用”;您可以解决它):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
    

    此时只需双击每个菜单项,然后对每个单击事件执行所需的操作,就像对任何其他按钮一样。

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

【讨论】:

很好的答案!您也可以使用 if 语句 If( e.Button == MouseButtons.Right) 除非自发布此答案以来发生了某些变化,否则您无需在代码中手动指定 MouseDown 事件。您所要做的就是将ContextMenuStrip 属性设置为要与之关联的控件的正确ContextMenuStrip。这会在您的解决方案中省去第 2 步和第 3 步(尽管添加了一个小得多的第 2 步)。 在VS2019中仍然有效 @BrootsWaymb 也许您想编辑答案以添加它?【参考方案3】:

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

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

【讨论】:

【参考方案4】:

刚刚搞砸了这个,知道 eX / eY 点是相对于控件是有用的,所以如果(像我一样)你正在向列表视图或类似的东西添加上下文菜单,你会想要用表单的原点调整它。在下面的示例中,我在 x/y 上添加了 20,以便菜单显示在光标的右侧和下方。

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

【讨论】:

【参考方案5】:

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

转到视图->工具箱

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

双击工具箱上的“ContextMenuStrip”

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

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

toolStripMenuItem1

toolStripMenuItem2

打开 yourform.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

【讨论】:

以上是关于为项目添加右键菜单的主要内容,如果未能解决你的问题,请参考以下文章

关于安装Git后,项目目录右键菜单无Git Bash Here命令的选项

DataGridview加上右键菜单 .net 2005 c#

将项目添加到 AddIn 中的 Visual Studio 文件夹右键菜单

如何在DataGridView上添加“右键菜单”

python实现应用程序在右键菜单中添加打开方式

如何用C语言添加鼠标右键菜单