2009-03-16 8 views
7

Estoy usando el control WebBrowser en una aplicación C# y quiero manejar todos los eventos clave mientras el 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 de navegador KeyDown evento, pero esto no funciona. No quiero conectar explícitamente un controlador a cada HtmlElement enfocable.Manejo de eventos clave en el control WebBrowser

¿Cómo puedo recibir todos los eventos clave antes de que se pasan al navegador o sus elementos de contenido?

Respuesta

9

tiene el evento PreviewKeyDown solo conéctelo.

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! 
    } 
} 
+1

Funciona incluso si 'WebBrowserShortcutsEnabled' está establecido en' False' – prostynick

2

Si quieres hacer algo como eludir la tecla Intro en el control WebBrowser que no están de suerte porque no hay KeyPress o eventos 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 
0

Puede agregar manejadores de teclas al elemento del 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 una vez que se haya cargado el documento, p. en el controlador de eventos DocumentCompleted.

Cuestiones relacionadas