Buscar..


Mostrando teclado táctil en Windows 8 y Windows 10

Aplicaciones WPF dirigidas a .NET Framework 4.6.2 y posteriores

Con las aplicaciones de WPF dirigidas a .NET Framework 4.6.2 (y posteriores), el teclado virtual se invoca y cierra automáticamente sin que sea necesario realizar ningún paso adicional.

Soporte de teclado suave WPF con .NET Framework 4.6.2

Aplicaciones WPF dirigidas a .NET Framework 4.6.1 y anteriores

WPF no está habilitado principalmente para tocar, lo que significa que cuando el usuario interactúa con una aplicación de WPF en el escritorio, la aplicación no mostrará automáticamente el teclado cuando los controles de TextBox reciben el enfoque. Este es un comportamiento inconveniente para los usuarios de tabletas, obligándolos a abrir manualmente el teclado táctil a través de la barra de tareas del sistema.

Teclado táctil en Windows

Solución

El teclado táctil es en realidad una aplicación exe clásica que se puede encontrar en cada PC con Windows 8 y Windows 10 en la siguiente ruta: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe .

En base a este conocimiento, puede crear un control personalizado derivado de TextBox , que escucha el evento GotTouchCapture (este evento se llama cuando el control se enfoca al tocar) e inicia el proceso del teclado táctil .

public class TouchEnabledTextBox : TextBox
{
    public TouchEnabledTextBox()
    {
        this.GotTouchCapture += TouchEnabledTextBox_GotTouchCapture;
    }

    private void TouchEnabledTextBox_GotTouchCapture(
       object sender, 
       System.Windows.Input.TouchEventArgs e )
    {
        string touchKeyboardPath =
           @"C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe";        
        Process.Start( touchKeyboardPath );
    }
}

Puede mejorar esto aún más si almacena en caché el proceso creado y luego lo mata después de que el control pierda el foco:

//added field
private Process _touchKeyboardProcess = null;
 
//replace Process.Start line from the previous listing with
_touchKeyboardProcess = Process.Start( touchKeyboardPath );

Ahora puedes conectar el evento LostFocus :

//add this at the end of TouchEnabledTextBox's constructor
this.LostFocus += TouchEnabledTextBox_LostFocus;

//add this method as a member method of the class
private void TouchEnabledTextBox_LostFocus( object sender, RoutedEventArgs eventArgs ){
   if ( _touchKeyboardProcess != null ) 
   {
      _touchKeyboardProcess.Kill();
      //nullify the instance pointing to the now-invalid process
      _touchKeyboardProcess = null;
   }
}

Nota sobre el modo tableta en Windows 10

Windows 10 introdujo un modo de tableta , que simplifica la interacción con el sistema cuando se usa la PC de manera táctil. Este modo, aparte de otras mejoras, garantiza que el teclado táctil se muestre automáticamente incluso para las aplicaciones de escritorio clásicas, incluidas las aplicaciones WPF.

Enfoque de configuración de Windows 10

Además del modo tableta, Windows 10 puede mostrar automáticamente el teclado táctil para aplicaciones clásicas incluso fuera del modo tableta. Este comportamiento, que está deshabilitado de forma predeterminada, se puede habilitar en la aplicación Configuración.

En la aplicación Configuración , vaya a la categoría Dispositivos y seleccione Escritura . Si se desplaza completamente hacia abajo, puede encontrar la opción "Mostrar el teclado táctil o el panel de escritura a mano cuando no está en el modo de tableta y no hay ningún teclado conectado", que pueda habilitar.

Configuración del teclado táctil

Cabe mencionar que esta configuración solo es visible en dispositivos con capacidades táctiles.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow