수색…
Windows 8 및 Windows 10에서 터치 키보드 표시
.NET Framework 4.6.2 이상을 대상으로하는 WPF 응용 프로그램
.NET Framework 4.6.2 (이상)를 대상으로하는 WPF 응용 프로그램을 사용하면 추가 단계없이 소프트 키보드가 자동으로 호출 및 해제됩니다.
.NET Framework 4.6.1 및 이전 버전을 대상으로하는 WPF 응용 프로그램
WPF는 주로 터치 사용이 가능하지 않습니다. 즉, 사용자가 데스크톱에서 WPF 응용 프로그램과 상호 작용할 때 TextBox
컨트롤에 포커스가 수신되면 응용 프로그램에서 자동으로 터치 키보드를 표시하지 않습니다 . 이는 태블릿 사용자가 시스템 작업 표시 줄을 통해 터치 키보드를 수동으로 열도록하는 불편한 행동입니다.
해결 방법
터치 키보드는 실제로 각 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은 태블릿 모드를 벗어난 경우에도 클래식 응용 프로그램 용 터치 키보드를 자동으로 표시 할 수 있습니다. 이 동작은 기본적으로 사용하지 않도록 설정되어 있으며 설정 앱에서 사용할 수 있습니다.
설정 앱에서 기기 카테고리로 이동하여 입력을 선택합니다. 맨 아래로 스크롤하면 "태블릿 모드가 아닐 때 터치 키보드 또는 필기 패널 표시 및 키보드 연결 없음"설정을 사용할 수 있습니다.
이 설정은 터치 기능이있는 장치에서만 볼 수 있습니다.