Estoy portando una aplicación MFC a .NET WinForms. En la aplicación MFC, puede hacer clic con el botón derecho en un menú o en un elemento del menú contextual y mostramos otro menú contextual con elementos de diagnóstico y configuración. Estoy tratando de portar esta funcionalidad a .NET, pero estoy teniendo problemas.Cómo mostrar un menú contextual al hacer clic con el botón derecho en un elemento de menú
He podido capturar el clic derecho, desactivar el clic del menú subyacente y abrir un menú contextual en la ubicación correcta, pero el menú original desaparece tan pronto como pierde el foco.
En MFC, mostramos el nuevo menú contextual llamando TrackPopupMenuEx con la bandera TPM_RECURSE.
ContextMenu y el más nuevo ContextMenuStrip clases en .NET sólo tienen un Muestra método. ¿Alguien sabe cómo hacer esto en .NET?
EDITAR
He intentado usar TrackPopupMenuEx a través de un p/invocar, sino que se limita al uso de un ContextMenu en lugar de un ContextMenuStrip que parece fuera de lugar en nuestra aplicación. Tampoco funciona correctamente. No funciona con la nueva MenuStrip y ContextMenuStrip.
También he intentado crear una subclase de ToolStripMenuItem para ver si puedo agregarle un menú contextual. Eso está funcionando para MenuStrip, pero ContextMenuStrip aún permite que los eventos de clic derecho pasen como clics.
Por qué no utilizar un submenú, por lo que cuando se pasa sobre el elemento de menú, se muestra más artículos? –
Muchos de nuestros menús ya tienen submenús. Usamos esta característica para que los administradores puedan ajustar la seguridad de los menús. Por ejemplo, haga clic derecho en un menú y configúrelo en deshabilitado. Eso se almacena en la base de datos y afecta a todos los usuarios. –