Me he encontrado con problemas al alojar un formulario de WinForms dentro de un WindowsFormsHost
y la pestaña de navegación. Para resolver he hecho este sencillo ejemplo:WPF que aloja un WinForm, Tab. Problemas de navegación
- Creado WPF
Window
- Creado WinForms
Form
(punto de aplicación inicial) con dosTextBox
en él - ventana de WPF: Añadido
WindowsFormsHost
a ella ventana
- WPF : Añadido
OnLoaded
manejador ventana
- WPF: Añadido
Textbox
encuentra debajo delWindowsFormsHost
En el controlador OnLoaded
que tengo:
System.Windows.Forms.Form f = new WinFormsForm();
f.TopLevel = false;
f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.windowsFormsHost1.Child = f;
Cuando ahora ejecutar la aplicación:
- Nada se centra (OK)
- hago clic en el primer
TextBox
en elWindowsFormsHost
, se enfoca (ok) - Presiono la pestaña, el foco va al 2nd
TextBox
en elWindowsFormsHost
(ok) - Presiono la pestaña nuevamente, el foco vuelve al 1er
TextBox
en elWindowsFormsHost
(no bien; debería haber dejadoWindowsFormsHost
y dado el enfoque al cuadro de texto en la parte inferior de la ventana de WPF) - hago clic en el cuadro de texto en el WPF (coloca después y bajo la
WindowsFormsHost
), se pone el foco (OK) - presiono pestaña , el foco va al 1er cuadro de texto en
WindowsFormsHost
- como debe ir al principio después del final. Así que esto es aceptable también - hacer clic en el cuadro de texto WPF de nuevo y presiona SHIFT + TAB, el foco va a segundo cuadro de texto en
WindowsFormsHost
(OK) - presiono pestaña, el foco va a primera caja de texto en
WindowsFormsHost
(va al principio de la FMH) (no bien)
como hago para quitar el foco comportarse como si tuviera sólo los controles de un tipo? Es decir, un orden de tabulación de WFH-1st-Textbox, WFH-2nd-Textbox, WPF-Textbox en este caso.
En el proyecto real que me condujo a este problema minimizado, la situación es incluso un poco diferente. Allí, la tecla de tabulación cambia entre todos los controles de WPF (incluido WindowsFormsHost). Pero una pestaña-prensa en WindowsFormsHost no va a uno de los otros controles de WinForms dentro de WindowsFormsHost, simplemente deja que WindowsFormsHost continúe con el siguiente control de WPF. – ZoolWay