繁体   English   中英

如何向 WinForms ContextMenu 添加分隔符?

[英]How to add a separator to a WinForms ContextMenu?

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

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 添加分隔线?

我相信这只是一个破折号:

ContextMenu.MenuItems.Add("-");

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

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

在 WPF 中:

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

如果您使用的是设计器,请以与命名菜单项相同的方式放置一个连字符“-”作为文本。 按回车后,将创建分隔符。

将 text 属性设置为连字符。

水平分隔符很酷,但如果你想要一个垂直分隔符呢?

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

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

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

在此处输入图片说明

要将项目添加到MenuItems集合: yourContextMenu.MenuItems.Add(item)

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

ContextMenu一个构造函数,它接收一个MenuItem对象数组。 不用说,您不能向该数组添加字符串。 但是,您可以通过添加new MenuItem("-")来获得分隔符:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM