我一直在搜索单个项目的简单右键菜单。例如,如果我右键单击图片,我想要一个小菜单来提出我自己的标签:添加,删除等。如果有人可以提供帮助,我会非常感激。
感谢您的光临。
以下是完成的代码:
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;
答案 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。
首先将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添加“using”;您可以解决它):
this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
此时所需要的只是双击每个菜单项,并按照与任何其他按钮相同的方式为每个点击事件执行所需的操作。
这是此操作的基本代码。您可以明显地修改它以适应您的编码实践。
答案 2 :(得分:12)
如果您使用的是Visual Studio,还有一个GUI解决方案:
答案 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));