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