Zoeken…


Aanraaktoetsenbord weergeven op Windows 8 en Windows 10

WPF-apps die zijn gericht op .NET Framework 4.6.2 en hoger

Met WPF-apps die zijn gericht op .NET Framework 4.6.2 (en hoger), wordt het zachte toetsenbord automatisch aangeroepen en afgewezen zonder dat aanvullende stappen vereist zijn.

Ondersteuning voor WPF-softtoetsenbord met .NET Framework 4.6.2

WPF-apps die zijn gericht op .NET Framework 4.6.1 en eerder

WPF is niet primair aanraakgevoelig, wat betekent dat wanneer de gebruiker een WPF-toepassing op het bureaublad gebruikt, de app het aanraaktoetsenbord niet automatisch weergeeft wanneer de besturingselementen van TextBox focus krijgen. Dit is een onhandig gedrag voor gebruikers van tablets, waardoor ze het aanraaktoetsenbord handmatig moeten openen via de systeemtaakbalk.

Touch-toetsenbord in Windows

tijdelijke oplossing

Het aanraaktoetsenbord is eigenlijk een klassieke exe toepassing die op elke Windows 8- en Windows 10-pc op het volgende pad kan worden gevonden: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe .

Op basis van deze kennis kunt u een aangepast besturingselement maken dat is afgeleid van TextBox , dat luistert naar de GotTouchCapture gebeurtenis (deze gebeurtenis wordt opgeroepen wanneer het besturingselement focus krijgt door aanraking) en het proces van het aanraaktoetsenbord start .

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

Je kunt dit nog verder verbeteren door het gemaakte proces in het cachegeheugen op te slaan en het vervolgens te doden nadat de controle de focus verliest:

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

Nu kunt u het LostFocus evenement aansluiten:

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

Opmerking over de tabletmodus in Windows 10

Windows 10 heeft een tabletmodus geïntroduceerd die de interactie met het systeem vereenvoudigt wanneer de pc op de eerste manier wordt gebruikt. Deze modus zorgt er, afgezien van andere verbeteringen, voor dat het aanraaktoetsenbord automatisch wordt weergegeven, zelfs voor klassieke Desktop-apps inclusief WPF-apps.

Windows 10 instellingen aanpak

Naast de tabletmodus kan Windows 10 automatisch het aanraaktoetsenbord weergeven voor klassieke apps, zelfs buiten de tabletmodus. Dit gedrag, dat standaard is uitgeschakeld, kan worden ingeschakeld in de app Instellingen.

Ga in de app Instellingen naar de categorie Apparaten en selecteer Typen . Als u helemaal naar beneden scrolt, vindt u de instelling 'Het aanraaktoetsenbord of handschriftpaneel tonen als de tabletmodus niet is ingeschakeld en er geen toetsenbord is aangesloten', die u kunt inschakelen.

Raak de toetsenbordinstelling aan

Het is vermeldenswaard dat deze instelling alleen zichtbaar is op apparaten met aanraakmogelijkheden.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow