Recherche…


Affichage du clavier tactile sous Windows 8 et Windows 10

Applications WPF ciblant .NET Framework 4.6.2 et versions ultérieures

Avec les applications WPF ciblant .NET Framework 4.6.2 (et versions ultérieures), le clavier logiciel est automatiquement appelé et supprimé sans aucune étape supplémentaire.

Prise en charge du clavier logiciel WPF avec .NET Framework 4.6.2

Applications WPF ciblant .NET Framework 4.6.1 et versions antérieures

WPF n'est pas principalement activé par le toucher, ce qui signifie que lorsque l'utilisateur interagit avec une application WPF sur le bureau, l'application n'affichera pas automatiquement le clavier tactile lorsque les contrôles TextBox recevront le focus. Il s’agit d’un comportement peu pratique pour les utilisateurs de tablettes, les obligeant à ouvrir manuellement le clavier tactile via la barre des tâches du système.

Toucher le clavier dans Windows

solution de contournement

Le clavier tactile est en fait une application exe classique qui peut être trouvée sur chaque ordinateur Windows 8 et Windows 10 sur le chemin suivant: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe .

Sur la base de ces connaissances, vous pouvez créer un contrôle personnalisé dérivé de TextBox , qui écoute l'événement GotTouchCapture (cet événement est appelé lorsque le contrôle obtient le focus à l'aide du toucher) et démarre le processus du clavier tactile .

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 );
    }
}

Vous pouvez encore améliorer cela en mettant en cache le processus créé et en le tuant après que le contrôle ait perdu le focus:

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

Vous pouvez maintenant LostFocus événement 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;
   }
}

Remarque sur le mode tablette dans Windows 10

Windows 10 a introduit un mode tablette , ce qui simplifie l’interaction avec le système lors de l’utilisation du PC en mode tactile. Outre les autres améliorations, ce mode garantit que le clavier tactile est automatiquement affiché, même pour les applications de bureau classiques, y compris les applications WPF.

Approche des paramètres Windows 10

Outre le mode tablette, Windows 10 peut afficher automatiquement le clavier tactile pour les applications classiques, même en dehors du mode tablette. Ce comportement, qui est désactivé par défaut, peut être activé dans l'application Paramètres.

Dans l'application Paramètres , accédez à la catégorie Périphériques et sélectionnez Saisie . Si vous faites défiler complètement, vous pouvez sélectionner le paramètre "Afficher le clavier tactile ou le panneau d'écriture lorsque le mode n'est pas en mode tablette et qu'il n'y a pas de clavier connecté", que vous pouvez activer.

Réglage du clavier tactile

Il est à noter que ce paramètre est uniquement visible sur les appareils dotés de fonctions tactiles.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow