我正在将一个MFC应用程序移植到.NET WinForms。在MFC应用程序中,您可以右键单击菜单或上下文菜单项,然后我们会显示另一个带有诊断和配置项目的上下文菜单。我正在尝试将此功能移植到.NET,但我遇到了麻烦。
我已经能够捕获右键单击,禁用基础菜单的单击并在正确位置弹出上下文菜单,但原始菜单在失去焦点后立即消失。
在MFC中,我们通过使用TPM_RECURSE标志调用TrackPopupMenuEx来显示新的上下文菜单。
.NET中的ContextMenu和较新的ContextMenuStrip类仅具有Show方法。有人知道如何在.NET中实现这一点吗?
编辑
我已经尝试通过p/invoke使用TrackPopupMenuEx,但这将限制您使用ContextMenu而不是ContextMenuStrip,这在我们的应用程序中看起来不协调。它还是不能正常工作。它不适用于新的MenuStrip和ContextMenuStrip。
我还尝试对ToolStripMenuItem进行子类化,以查看是否可以向其中添加上下文菜单。这对于MenuStrip有效,但ContextMenuStrip仍允许右键单击事件通过。