我可以在 .NET Windows 窗体中创建多列上下文菜单吗?

2024-03-30

我想创建一个包含多个列的上下文菜单。基本上它会是这样的:

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(使用前将#替换为@)

我可以在 .NET Windows 窗体中创建多列上下文菜单吗? 的相关文章

随机推荐

  • 我们可以强制使用 Dart 垃圾收集器吗?

    我正在尝试模拟内存泄漏Streams 出于教育目的 但如果 GC 尚未运行 我无法确定内存是否真的泄漏 我可以在纯 Dart 测试中强制执行 GC 扫描吗 您可以通过 Dart DevTools Web GUI 来完成此操作 https d
  • 如何在android中创建液体布局

    我正在大学进行一个项目 我想知道如何在android中使用液体布局 以便不同的屏幕尺寸必须根据其分辨率看到应用程序 简而言之 我想创建一个应用程序 其布局在所有类型的屏幕上都是完美的 我知道如何在 PC 网站中用简单的 html css 创
  • Data.model.updateItem 不是函数 TypeError:Data.model.updateItem 不是函数

    使用 mongo 的 keystone js 中出现错误 Vehicle model updateItem 不是函数 TypeError Vehicle model updateItem 不是函数 目标是使用对象更新模型 就像我使用 ff
  • 让 TFS 将每个项目输出到其自己的目录的最佳方法是什么?

    我正在将大型代码库放入 Team Foundation Server 中 我希望构建过程能够创建我们项目的 准备部署 版本 我们执行此操作的正常方法是将每个项目的输出放在其自己的文件夹中 因此 例如 我们最终会得到类似的东西 C proje
  • R:创建具有节点属性的“statnet”网络

    我正在按照这里的示例使用 statnet 库http personal psu edu drh20 papers v24i09 pdf http personal psu edu drh20 papers v24i09 pdf 第一个示例展
  • 最小化 malloc() 调用量可以提高性能吗?

    考虑两个应用程序 一个 num 1 调用 malloc 多次 另一个 num 2 调用 malloc 几次 两个应用程序都分配same内存量 假设 100MB 对于哪个应用程序 下一个 malloc 调用会更快 1 还是 2 换句话说 ma
  • 如何为模板设置主题以进行编辑或添加特定内容类型的节点?

    我想为模板设置主题以进行编辑或添加特定内容类型的节点 例如 为了主题化所有内容类型表单 我使用该文件page node add edit tpl php 取决于我需要添加或编辑什么 但我没有找到自定义节点类型的模板名称 例如 产品 我只需要
  • 使用自定义选项时,Magento 1.7.0.1 将价格重置为 0

    我在用着Magento 1 7 0 1最近刚刚升级1 6 2 0 我有 SCP 扩展以及 MageWorx 高级自定义选项 我有一个可配置的产品 其中关联的简单产品具有自定义选项 如果您选择以下组合中的下拉菜单 您将看到带有可用自定义选项的
  • Laravel 将 .html 附加到路由(并且也可以在没有 .html 的情况下工作)

    添加 html 并使其双向工作的最简单方法是什么 example com about gt 有效 example com about html gt 有效 我可以将 html 添加到路线中 但如果没有 它就无法工作 Route get ab
  • 随时间反向传播

    有谁知道有一个可以有效实现时间反向传播的库吗 Java Python C VB NET F 中的任何一个 最好是最后一个 都可以 假设您已经在使用一些 BP 库 那么使用 BP 作为流程中的一个步骤来实现 BPTT 应该 TM 相当简单 B
  • 从数据库填充 JTree

    我有一个包含字段category id category name 和parent category id 的表 并且parent category id具有来自表示父子关系的category id的值 我没有任何固定的层次结构级别 它可能
  • 在 T-SQL 中透视数据

    我有一群人 我们称它们为A B C 我有一张表格 显示他们每个月的工资 PERSON MONTH PAID A JAN 10 A FEB 20 B JAN 10 B FEB 20 B SEP 30 C JAN 10 C JUNE 20 C
  • 将多个数组槽设置为一个值的更简单方法

    我正在编码C https en wikipedia org wiki C 我有以下代码 int array 30 array 9 1 array 5 1 array 14 1 array 8 2 array 15 2 array 23 2
  • java中最常用的运行时异常有哪些? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 作为一名希望完善自己的编程技能的java程序员 我经常遇到必须创建运行时异常的情况 我知道如果明智地使用的话 这是一种很好的做法 亲自 空指针异
  • Android 3.2 所有屏幕的布局相同

    我为我的应用程序设置了以下布局配置 小 正常 大 超大屏幕布局适用于 Android 1 5 至 3 1 在 android 3 2 中所有屏幕即 small 320 426密度为 160 normal 320 470密度为 160 lar
  • 删除 HTML5 Canvas 上的部分图像?

    我有一个 HTML5 Canvas 我正在使用KineticJS KonvaJS http konvajs github io 画布库 在空白画布上 我绘制了如下图所示的图像 现在我想创建一个圆形形状 可用于擦除图像的某些部分 图中的红色圆
  • COM_STMT_PREPARE 响应大小错误。收到 7.LARAVEL 错误

    我有一个使用 laravel 开发的博客 在我的本地电脑上 一切正常 但是当我将其上传到实时共享托管服务器时 它会抛出如下错误 ErrorException in MySqlConnector php line 124 Wrong COM
  • 使用 NLTK 的块解析器匹配单词

    NLTK的块解析器的正则表达式可以匹配POS标签 但是它们也可以匹配特定的单词吗 所以 假设我想用名词后跟动词 left 来对任何结构进行分块 将此模式称为 L 例如 句子 the DT dog NN left VB 应被分块为 S DT
  • 实现 INotifyPropertyChanged 的​​模式?

    我已经看到以下用于实现 INotifyPropertyChanged 的 模式 private void NotifyPropertyChanged string propertyName PropertyChangedEventHandl
  • 我可以在 .NET Windows 窗体中创建多列上下文菜单吗?

    我想创建一个包含多个列的上下文菜单 基本上它会是这样的 First item common option All Options gt Second item common option All Options gt Third item