为项目添加右键菜单
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#