我想创建一个包含多个列的上下文菜单。基本上它会是这样的:
First item | [common option] | All Options >
Second item | [common option] | All Options >
Third item | [common option] | All Options >
Fourth item | [common option] | All Options >
所以基本上有一堆项目(在运行时生成),每个项目都可以单独启动;或使用常用选项;或者您可以获得包含所有可能选项的子菜单。
我怎样才能做到这一点?我正试图滥用两者ContextMenuStrip
and ContextMenu
,但他们似乎没有任何这样的选择。我仍然记得在某处见过多列菜单......
我更喜欢 Windows 窗体解决方案,因为我没有任何 WPF 经验。哦,当单击通知区域(也称为系统托盘)中的图标时,将打开此上下文菜单。
我不知道ContextMenuStrip
,这是一个完全用 .NET 代码构建的菜单,但您绝对可以使用ContextMenu
,它是本机系统菜单的包装。
关键是设置MFT_MENUBREAK
or MFT_MENUBARBREAK
各个菜单项的标志,它们作为属性公开MenuItem class http://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem.aspx包装:MenuItem.Break http://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem.break.aspx and MenuItem.BarBreak http://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem.barbreak.aspx, 分别。
前者只是将菜单项放置在新列中,而后者将菜单项放置在新列中,并用蚀刻的垂直线分隔列。
来自 MSDN 的例子:
public void CreateMyMenus()
{
// Create three top-level menu items.
MenuItem menuItem1 = new MenuItem("&File");
MenuItem menuItem2 = new MenuItem("&New");
MenuItem menuItem3 = new MenuItem("&Open");
// Set the BarBreak property to display horizontally.
menuItem2.BarBreak = true;
menuItem3.BarBreak = true;
// Add menuItem2 and menuItem3 to the menuItem1's list of menu items.
menuItem1.MenuItems.Add(menuItem2);
menuItem1.MenuItems.Add(menuItem3);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)