Estamos desarrollando un control de interfaz de usuario en WPF para ser consumido dentro de un motor de aplicación Windows Forms/MFC (Rhino 3D).WPF TextBox no acepta la entrada cuando está en ElementHost en Window Forms
El motor de aplicaciones expone la capacidad de crear una "Barra Dock" que esencialmente le permite colocar controles de Windows Forms dentro de una ventana secundaria que puede acoplarse a la Interfaz de motores.
Estoy tratando de poner un WPF TextBox simple dentro de un control ElementHost, que se agrega a la Dockbar. Esto parece funcionar bien a primera vista; pero después de intentar escribir en el TextBox, solo ciertas secuencias aparecen en el TextBox. El BORRAR, RETROCESO, COPIA, PASTA, y selección de texto trabajo. Si escribe A-Z, 1-9, etc. esas teclas no aparecen.
HE ASEGURADO la red, y he oído hablar de ElementHost.EnableModelessKeyboardInterop()
, pero esto solo se aplica a Windows WPF que se está creando a partir del formulario. Solo estoy creando UserControls de WPF y alojándolos en el control ElementHost.
vi un poste que habló sobre el Dispatcher.Run(), y que tipo de obras, pero rompe el resto de la forma:
System.Windows.Threading.Dispatcher.Run();
El PreviewKeyUp, PreviewKeyDown, KeyUp y KeyDown todos los eventos se disparan en el TextBox, pero desafortunadamente no aparece texto en el TextBox.
No sé mucho sobre los mensajes de Windows, pero al usar WinSpector noté que no venían mensajes WM_GETTEXT del TextBox (si es que deberían ser, no sé).
También creo un nuevo proyecto de Windows Forms e hice lo mismo allí y funciona bien, por lo que debe ser un problema con la forma en que las ventanas se crean y se acoplan dentro del motor 3D de Rhino.
Aquí es el código de ejemplo que no funciona:
ElementHost el = new ElementHost();
System.Windows.Controls.TextBox t = new System.Windows.Controls.TextBox();
t.Width = 100;
t.Text = "TEST";
el.Child = t;
panel1.Controls.Add(el);
Gracias, esto era exactamente lo que necesitaba. Lo puse en UserControl, como lo sugirió IvanH a continuación. ¡Funciona de maravilla! –
Gracias! Esto surgió como un problema para nosotros hoy, ¡y esto lo resolvió rápidamente! –