加入上下文菜单

时间:2012-02-24 14:58:03

标签: c# winforms contextmenu

如果我有上下文菜单,是否可以将其加入另一个菜单?所以你得到:

  Menu 1 Item 1
  Menu 1 Item 2
  Menu 1 Item N
    ---------
  Menu 2 Item 1
  Menu 2 Item 2
  Menu 2 Item N

让我们举一个类似记事本的程序的例子。菜单中重复出现,编辑菜单和编辑控件上下文菜单(剪切,复制,粘贴,全选......)中都有一组标准工具。

我希望有一个名为ClipboardTools的菜单,它将出现在编辑和控制上下文菜单中,而不需要多次创建项目。当然,在这种情况下,重复并不是那么糟糕,但我必须处理出现在3-4个不同菜单中的较大菜单,理想情况下不是子菜单。

1 个答案:

答案 0 :(得分:5)

是。由于每个menuItem都是一个单独的控件,因此可以将相同的menuItem添加到两个菜单中;

  var joinedMenuItem = new System.Windows.Forms.ToolStripMenuItem();
  menu1.Items.Add(joinedMenuItem );
  menu2.Items.Add(joinedMenuItem );

您可以将菜单从一个菜单添加到其他菜单;

  menu1.Items.AddRange(menu2.Items);

现在是时候说:
ToolStripMenu 子项是属性。
ToolStripMenuItem 子项位于 DropDownItems 属性中。

因此,如果您有两个顶级菜单项(如文件和编辑),并且您想要删除共享子项:

  foreach (var item in topMenuItem2.DropDownItems)
  {
      topMenuItem1.DropDownItems.Remove(item);
  }

在现实生活中,如果想要这样灵活的菜单系统,最有可能会创建菜单项的总列表。也许按类别菜单项的子集。然后,可以将这些列表中的菜单项添加到显示的菜单中。

例如,您可以为用户提供自定义菜单或创建自己的自定义菜单部分的可能性。就像在Visual Studio中完成的那样。