在我的控制范围内,我有:
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());
如果您使用设计器,请放置一个连字符“-”作为文本,就像命名菜单项一样。按 Enter 键后,将创建分隔符。
将文本属性设置为连字符。
水平分隔符很酷,但是如果您想要垂直分隔符怎么办?
好吧,不用担心 - 你可以拥有一个!
BarBreak
属性设置为 true
上的 MenuItem
,这应该是分隔符之后的第一个:
var item = new MenuItem(text: "Settings", onClick: SomeFunction) { BarBreak = true };
要将项目添加到
MenuItems
集合中:yourContextMenu.MenuItems.Add(item)
。
也许在 Visual Studio 的更高版本中,他们使这变得更简单。我使用的是 VS 2012。您可以通过表单设计器添加分隔符。 1) 选择/创建一个菜单条。 2) 在“在此键入”上,右键单击。 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())
});
private System.Windows.Controls.Separator separator;
separator = new Separator();
ContextMenu.Items.Add(separator);