2011-03-15 12 views
6

Tengo un control WebBrowser alojado en una ventana Form. El control se usa para mostrar hipervínculos que se crean en tiempo de ejecución. Estos enlaces apuntan a algunas páginas HTML y documentos PDF.Centrar el control WebBrowser en una aplicación C#

El problema es que cuando se carga el formulario que aloja el control del navegador, el foco está en el formulario. Cuando se presiona la tecla TAB, el foco no cambia al primer hipervínculo. Sin embargo, si realizo un clic con el mouse en el control y luego presiono la tecla TAB, el foco de tabulación está ahora en el primer hipervínculo. Intenté usar Select() en el control WebBrowser y luego llamé al Focus(), pero no resuelve el problema.

¿Alguna idea sobre cómo configurar el foco de la pestaña en el primer hipervínculo en la carga? Gracias.

Saludos, Harish

Respuesta

0

En un escenario normal debería ser suficiente para establecer el TabIndex del control WebBrowser a cero . De esta forma, cuando se cargue el formulario, el control se enfocará y presionando TAB se repetirá a través de los enlaces.

Tenga en cuenta que también debe cambiar el TabIndex de los otros controles en el formulario.

Si esto no resuelve su problema, debe agregar más detalles sobre la complejidad del formulario que aloja el control.

10

Supongo que puede deberse a que el foco está configurado antes de que la página esté completamente cargada. Prueba esto:

private void Go(string url) 
{ 
    webBrowser1.Navigate(url); 
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
} 

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    webBrowser1.Document.Body.Focus(); 
} 

También se puede seleccionar automáticamente el enfoque en el primer enlace directamente por conseguir el HtmlElement de ese primer enlace.

Si lo anterior no funciona, es posible que desee comprobar otras partes de su código para ver si algo más está capturando el foco. Intente buscar Select, Focus y ActiveControl en su código.

+0

Esto no ayuda en la edición actual :( –

+0

Si me permite la pregunta, ¿qué parte no ayuda? ¿El código de muestra que selecciona el control WebBrowser y permite a los usuarios seleccionar el enlace con la tecla TAB? O la parte que explica que necesita usar el elemento HtmlElement del primer enlace para establecer el foco en él? O la parte que pregunta para comprobar si ¿algo más está capturando el enfoque? Dígame qué parte no está clara. Explicaré más detalles si es necesario. Gracias. –

+0

@A shrafBashir, ¿podría explicarme cuál es el problema actual, que no pude ayudar? –

1

Use form.ShowDialog(form) en lugar de form.Show(), ¡entonces funcionará!
donde form es la instancia en ejecución de sus ventanas Form

1

Esta es mi solución

private void txtAdres_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    int licznik = 1; 
    if (e.KeyChar == (char)13) 
    { 
     string adres = txtAdres.Text; 
     webBrowser1.Navigate(adres); 
     licznik = 0; 
    } 
    if (licznik == 0) 
    { 
     webBrowser1.Focus(); 
    } 
} 
Cuestiones relacionadas