events - comandos - Manejo de eventos clave en el control WebBrowser
clusvcadm (3)
Estoy usando el control WebBrowser
en una aplicación C # y quiero manejar todos los eventos clave mientras WebBrowser
tiene el foco, independientemente de qué elemento de contenido individual (campo de entrada, enlace, etc.) esté enfocado. Intenté simplemente agregar un controlador de eventos al control del navegador evento KeyDown
, pero esto no funciona. No quiero conectar explícitamente un controlador a cada HtmlElement
.
¿Cómo puedo recibir todos los eventos clave antes de que se pasen al navegador o a sus elementos de contenido?
tienes el evento PreviewKeyDown solo conéctalo .
private void wb_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
// your code handling the keys here, like:
if (e.Control && e.KeyCode == Keys.C)
{
// Do something funny!
}
}
Si desea hacer algo como eludir la tecla Intro en el control WebBrowser no tiene suerte porque no hay eventos KeyPress o KeyDown para el control. KeyPreviewDownEventArgs no proporciona ninguna forma de eludir una pulsación de tecla. La única forma de hacerlo es sobrescribir la función ProcessCmdKey del formulario que aloja el control. Por ejemplo:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
If keyData <> Keys.Enter Then Return MyBase.ProcessCmdKey(msg, keyData)
Return True
End Function
Puede agregar manejadores de clave al elemento de cuerpo del documento cargado. Por defecto, esto capta el mismo evento que ocurre en cualquier elemento secundario del elemento del cuerpo.
webBrowser.Document.Body.KeyDown += MyKeyDownHandler;
...
private void MyKeyDownHandler(object sender, HtmlElementEventArgs e)
{
// Set e.ReturnValue false if you want to cancel the key press
}
Creo que el controlador se debe agregar después de cargar el documento, por ejemplo, en el controlador de eventos DocumentCompleted.