欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[WPF 学习] 11.虚拟键盘之庸人自扰

程序员文章站 2024-02-01 11:01:40
在带键盘鼠标的电脑上编写应用于触屏电脑的项目,为了能输入中文、英文、数字等各种庸人自扰。 一、自己画了个键盘 为了实现能输入中文,还简单编写了个拼音输入法,各种折腾,始终不是很舒服。最后客户要求手写输入中文,于是就完全放弃了。 二、折腾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()失效