我正在将MFC应用程序移植到.NET WinForms。在MFC应用程序中,您可以右键点击菜单或上下文菜单项,然后显示另一个包含诊断和配置项目的上下文菜单。我试图将此功能移植到.NET,但我遇到了麻烦。如何右键单击菜单项时显示上下文菜单
我已经能够捕获右键单击,禁用底层菜单的点击并在正确的位置弹出右键菜单,但原始菜单一失去焦点就立即消失。
在MFC中,我们将展示通过调用TrackPopupMenuEx与TPM_RECURSE标志的新的上下文菜单。
的ContextMenu和新的ContextMenuStrip类在.NET中只能有一个显示方法。有谁知道如何在.NET中做到这一点?
编辑
我一直在使用TrackPopupMenuEx通过的P/Invoke尝试过,但限制你使用文本菜单代替的ContextMenuStrip看起来出来的地方在我们的应用程序。它也仍然无法正常工作。它不适用于新的MenuStrip和ContextMenuStrip。
我也尝试了ToolStripMenuItem的子类来查看是否可以向它添加上下文菜单。这是工作MenuStrip,但ContextMenuStrip仍然允许右键单击事件通过点击。
为什么不直接使用一个子菜单中,这样,当你将鼠标悬停在菜单项,它显示了更多的项目? – 2008-11-11 19:18:18
我们的许多菜单已经有子菜单。我们使用此功能为管理员调整菜单的安全性。例如,右键单击一个菜单并将其设置为禁用。这存储在数据库中并对所有用户都有影响。 – 2008-11-11 19:21:09