在帶鍵盤滑鼠的電腦上編寫應用於觸屏電腦的項目,為了能輸入中文、英文、數字等各種庸人自擾。 一、自己畫了個鍵盤 為了實現能輸入中文,還簡單編寫了個拼音輸入法,各種折騰,始終不是很舒服。最後客戶要求手寫輸入中文,於是就完全放棄了。 二、折騰TabTip.exe win10的虛擬鍵盤是一個程式,即c:\P ...
在帶鍵盤滑鼠的電腦上編寫應用於觸屏電腦的項目,為了能輸入中文、英文、數字等各種庸人自擾。
一、自己畫了個鍵盤
為了實現能輸入中文,還簡單編寫了個拼音輸入法,各種折騰,始終不是很舒服。最後客戶要求手寫輸入中文,於是就完全放棄了。
二、折騰TabTip.exe
win10的虛擬鍵盤是一個程式,即c:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe,文本框獲得焦點後,運行如下代碼
var file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
if (!System.IO.File.Exists(file))
return;
Process.Start(file);
有時候會失效,後來發現要先殺進程,於是
foreach (var process in Process.GetProcessesByName("TabTip"))
process.Kill();
var file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
if (!System.IO.File.Exists(file))
return;
Process.Start(file);
似乎可以了,接著就像能不能彈出數字鍵盤、只輸入英文等,又是各種百度、查看註冊表等等,居然查到一篇文章WPF 禁用TextBox的觸摸後自動彈出虛擬鍵盤,觸摸是關鍵,暈。
於是以為要平板模式的時候能自動彈出虛擬鍵盤,後來發現無鍵盤和滑鼠的win10裡面居然還有個“不處於平板電腦模式且未連接鍵盤時顯示觸摸鍵盤”的開關,於是一切都變得簡單了。
三、直接控制TextBox
<TextBox Name="tb1" FontSize="50" HorizontalContentAlignment="Center" InputMethod.IsInputMethodEnabled="True" InputMethod.InputScope="Digits"/>
<TextBox Name="tb2" FontSize="40" InputMethod.IsInputMethodEnabled="True" InputMethod.InputScope="PersonalFullName"/>
tb1獲得焦點的時候(觸摸或者tb1.Focus())自動顯示虛擬鍵盤的數字界面
tb2獲得焦點的時候自動顯示全鍵盤
一定要觸摸,滑鼠單擊按鈕然後執行tb1.Focus()失效