수색…


Windows 8 및 Windows 10에서 터치 키보드 표시

.NET Framework 4.6.2 이상을 대상으로하는 WPF 응용 프로그램

.NET Framework 4.6.2 (이상)를 대상으로하는 WPF 응용 프로그램을 사용하면 추가 단계없이 소프트 키보드가 자동으로 호출 및 해제됩니다.

.NET Framework 4.6.2로 WPF 소프트 키보드 지원

.NET Framework 4.6.1 및 이전 버전을 대상으로하는 WPF 응용 프로그램

WPF는 주로 터치 사용이 가능하지 않습니다. 즉, 사용자가 데스크톱에서 WPF 응용 프로그램과 상호 작용할 때 TextBox 컨트롤에 포커스가 수신되면 응용 프로그램에서 자동으로 터치 키보드를 표시하지 않습니다 . 이는 태블릿 사용자가 시스템 작업 표시 줄을 통해 터치 키보드를 수동으로 열도록하는 불편한 행동입니다.

Windows의 터치 키보드

해결 방법

터치 키보드는 실제로 각 Windows 8 및 Windows 10 PC에서 C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe 경로에있는 고전적인 exe 응용 C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe 입니다.

이 지식을 기반으로 GotTouchCapture 이벤트를 수신하는 TextBox 에서 파생 된 사용자 정의 컨트롤을 만들 수 있습니다 (이 이벤트는 컨트롤이 터치를 사용하여 포커스를 가져올 때 호출됩니다). 터치 키보드의 프로세스가 시작됩니다 .

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

생성 된 프로세스를 캐싱하고 컨트롤이 포커스를 잃은 후에이를 삭제하면이 기능을 더욱 향상시킬 수 있습니다.

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

이제 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;
   }
}

Windows 10의 태블릿 모드에 대한 참고 사항

Windows 10은 태블릿 모드를 도입하여 터치 방식으로 PC를 사용할 때 시스템과의 상호 작용을 단순화합니다. 이 모드는 다른 개선점과 별도로 터치 키보드가 WPF 응용 프로그램을 포함한 기존 데스크톱 응용 프로그램에도 자동으로 표시됩니다 .

Windows 10 설정 방식

태블릿 모드 외에도 Windows 10은 태블릿 모드를 벗어난 경우에도 클래식 응용 프로그램 용 터치 키보드를 자동으로 표시 할 수 있습니다. 이 동작은 기본적으로 사용하지 않도록 설정되어 있으며 설정 앱에서 사용할 수 있습니다.

설정 앱에서 기기 카테고리로 이동하여 입력을 선택합니다. 맨 아래로 스크롤하면 "태블릿 모드가 아닐 때 터치 키보드 또는 필기 패널 표시 및 키보드 연결 없음"설정을 사용할 수 있습니다.

터치 키보드 설정

이 설정은 터치 기능이있는 장치에서만 볼 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow