Я переношу приложение MFC в .NET WinForms. В приложении MFC вы можете щелкнуть правой кнопкой мыши по меню или в элементе контекстного меню, и мы покажем другое контекстное меню с параметрами диагностики и конфигурации. Я пытаюсь перенести эту функциональность в .NET, но у меня возникают проблемы.
Я смог зафиксировать правый щелчок, отключить щелчок основного меню и отобразить контекстное меню в нужном месте, но исходное меню исчезает, как только оно теряет фокус.
В MFC мы показываем новое контекстное меню, вызывая TrackPopupMenuEx с флагом TPM_RECURSE.
ContextMenu, а новые классы ContextMenuStrip в .NET имеют только метод Show. Кто-нибудь знает, как это сделать в .NET?
ИЗМЕНИТЬ
Я попытался использовать TrackPopupMenuEx через p/invoke, но это ограничивает использование ContextMenu вместо ContextMenuStrip, который выглядит неуместным в нашем приложении. Он также по-прежнему работает неправильно. Он не работает с новым MenuStrip и ContextMenuStrip.
Я также попытался подклассифицировать ToolStripMenuItem, чтобы увидеть, могу ли я добавить к нему контекстное меню. Это работает для MenuStrip, но ContextMenuStrip по-прежнему позволяет событиям правого клика проходить через клики.