如何向 WinForms ContextMenu 添加分隔符?

问题描述 投票:0回答:9

在我的控制范围内,我有:

ContextMenu = new ContextMenu();
ContextMenu.MenuItems.Add(new MenuItem("&Add Item", onAddSpeaker));
ContextMenu.MenuItems.Add(new MenuItem("&Edit Item", onEditSpeaker));
ContextMenu.MenuItems.Add(new MenuItem("&Delete Item", onDeleteSpeaker));
ContextMenu.MenuItems.Add( ??? );
ContextMenu.MenuItems.Add(new MenuItem("Cancel"));

如何向此ContextMenu添加分隔线?

c# winforms contextmenu separator
9个回答
245
投票

我相信这只是破折号:

ContextMenu.MenuItems.Add("-");

61
投票

这与破折号一样有效,我怀疑 Winforms 会将破折号转换为 ToolStripSeparator。我认为这个解决方案对于任何必须维护代码的人来说都更明显。

yourContextMenu.Items.Add(new ToolStripSeparator());

11
投票

在 WPF 中:

ContextMenu.MenuItems.Add(new Separator());

7
投票

如果您使用设计器,请放置一个连字符“-”作为文本,就像命名菜单项一样。按 Enter 键后,将创建分隔符。


3
投票

将文本属性设置为连字符。


3
投票

水平分隔符很酷,但是如果您想要垂直分隔符怎么办?

好吧,不用担心 - 你可以拥有一个!

BarBreak
属性设置为
true
上的
MenuItem
,这应该是分隔符之后的第一个:

var item = new MenuItem(text: "Settings", onClick: SomeFunction) { BarBreak = true };

要将项目添加到

MenuItems
集合中:
yourContextMenu.MenuItems.Add(item)


1
投票

也许在 Visual Studio 的更高版本中,他们使这变得更简单。我使用的是 VS 2012。您可以通过表单设计器添加分隔符。 1) 选择/创建一个菜单条。 2) 在“在此键入”上,右键单击。 3) 选择“插入”。 4) 选择“分隔符”。 5) 将新分隔符拖到您希望其位于上方的文本上。 完成。


0
投票

ContextMenu
一个构造函数,它接收
MenuItem
对象的数组。不用说,您不能将字符串添加到该数组中。但是,您可以通过添加
new MenuItem("-")
:

来获得分隔符
    var contextMenu = new ContextMenu(new[]
    {
        timerMenuItem,
        keypressMenuItem,
        new MenuItem("-"), // Seperator
        new MenuItem(text: "Exit", onClick: (sender, args) => Application.Exit())
    });

0
投票
private System.Windows.Controls.Separator separator;
separator = new Separator();
ContextMenu.Items.Add(separator);
© www.soinside.com 2019 - 2024. All rights reserved.