Sök…


Visar pekbord på Windows 8 och Windows 10

WPF-appar som är inriktade på .NET Framework 4.6.2 och senare

Med WPF-appar som är inriktade på .NET Framework 4.6.2 (och senare) aktiveras och avfärdas det mjuka tangentbordet automatiskt utan några ytterligare steg krävs.

WPF-stöd för mjuktangentbord med .NET Framework 4.6.2

WPF-appar som är inriktade på .NET Framework 4.6.1 och tidigare

WPF är inte primärt beröringsaktiverat, vilket innebär att när användaren interagerar med en WPF-applikation på skrivbordet, kommer appen inte automatiskt att visa tangentbordet när TextBox kontroller får fokus. Detta är ett obekvämt beteende för användare av surfplattor, vilket tvingar dem att manuellt öppna pekbordet via systemaktivitetsfältet.

Tryck på tangentbordet i Windows

Jobba runt

Beröringstangentbordet är faktiskt ett klassiskt exe program som finns på varje Windows 8 och Windows 10 PC på följande sökväg: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe .

Baserat på denna kunskap kan du skapa en anpassad kontroll härrörande från TextBox , som lyssnar på GotTouchCapture händelsen (denna händelse kallas när kontrollen får fokus med beröring) och startar beröringstangentbordets process .

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

Du kan förbättra detta ytterligare genom att cacha den skapade processen och sedan döda den efter att kontrollen tappat fokus:

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

Nu kan du LostFocus upp LostFocus evenemanget:

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

Obs om Tablet-läget i Windows 10

Windows 10 introducerade ett tablettläge , vilket förenklar interaktion med systemet när du använder datorn på touch-first-sätt. Detta läge, förutom andra förbättringar, garanterar att pekskärmtangentbordet visas automatiskt även för klassiska skrivbordsappar inklusive WPF-appar.

Inställningar för Windows 10-inställningar

Förutom tablettläget kan Windows 10 automatiskt visa pekbordet för klassiska appar även utanför tablettläget. Detta beteende, som är inaktiverat som standard, kan aktiveras i appen Inställningar.

Gå till appen Inställningar , gå till kategorin Enheter och välj Skriva . Om du bläddrar hela vägen ner hittar du inställningen "Visa pekskärmtangentbordet eller handskrivpanelen när du inte är i tablettläge och det inte finns något tangentbord anslutet", som du kan aktivera.

Tryck på tangentbordets inställning

Det är värt att nämna att den här inställningen endast är synlig på enheter med beröringsfunktioner.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow