[WPF 學習] 11.虛擬鍵盤之庸人自擾


在帶鍵盤鼠標的電腦上編寫應用於觸屏電腦的項目,為了能輸入中文、英文、數字等各種庸人自擾。

一、自己畫了個鍵盤
為了實現能輸入中文,還簡單編寫了個拼音輸入法,各種折騰,始終不是很舒服。最后客戶要求手寫輸入中文,於是就完全放棄了。

二、折騰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()失效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM