Siguiendo el enfoque mencionado en el siguiente enlace, pude anular el menú contextual predeterminado.
¿Cómo anula el menú contextual que aparece al hacer clic con el botón derecho en WebView2 Control?
Tengo una pregunta, ¿hay alguna manera de mostrar ambos en función de alguna condición como
Eso es realmente fácil, cuando tienes el código de ese enlace.
El evento contextmenu
se deriva de MouseEvent
, por lo que tiene información sobre las teclas de control que se presionan.
Simplemente reemplace el controlador del contextmenu
de javascript para:
document.addEventListener('contextmenu', function (event) { if (!event.ctrlKey && !event.shiftKey) { let jsonObject = { Key: 'contextmenu', Value: { X: event.screenX, Y: event.screenY } }; window.chrome.webview.postMessage(jsonObject); event.preventDefault(); } });
Funciona de manera que si se presiona una tecla de control, no hace absolutamente nada, lo que mostrará el menú predeterminado. Si no se presiona ninguna tecla, envía las coordenadas a C# y llama a event.preventDefault();
.
Nota : en el código de ese enlace, llamo:
webView21.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;
Aquí, NO deberías llamar así. En su lugar, llame a event.preventDefault();
en javascript.