WPF 禁用TextBox的触摸后自动弹出虚拟键盘

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 禁用TextBox的触摸后自动弹出虚拟键盘相关的知识,希望对你有一定的参考价值。

原文:WPF 禁用TextBox的触摸后自动弹出虚拟键盘

前言 & 问题

如下截图,TextBox,在触摸点击后,会自动弹出windows的虚拟键盘。

技术分享图片

如何,禁用键盘的自动弹出?

调用虚拟键盘

通过调用TapTip.exe或者osk.exe,主动弹出虚拟键盘

详细调用可参考:c#调用windows虚拟键盘

如何禁用键盘的弹出

TextBox在触摸点击后,会自动弹出虚拟键盘,是因为在控件中作了封装。

--TextBox中详细TabTip.exe封装看了会,没找到

处理方案:重写TextBox的方法OnCreateAutomationPeer,返回一个UIElementAutomationPeer而不是AutomationPeer。

可能原因:TextBox自定义实现中返回的是AutomationPeer,而UIElementAutomationPeer继承AutomationPeer,重写了相关键盘属性。

猜测与HasKeyboardFocusCore属性有关。

技术分享图片

直接复制如下代码:

 1     /// <summary>
 2     /// 禁用自动弹出虚拟键盘的TextBox控件
 3     /// </summary>
 4     public class TextBoxNoAutoKeyboard : TextBox
 5     {
 6         protected override AutomationPeer OnCreateAutomationPeer()
 7         {
 8             return new FrameworkElementAutomationPeer(this);
 9         }
10     }

 以上参考自:【stackoverflow】“Hide” text box from automatic Win10 keyboard showing

以上是关于WPF 禁用TextBox的触摸后自动弹出虚拟键盘的主要内容,如果未能解决你的问题,请参考以下文章

WPF虚拟键盘如何不获得当前焦点

如何禁用所有 WPF 应用程序的虚拟键盘?

WIN7系统触摸屏一体机,点击输入框自动弹出虚拟键盘!

在焦点事件 TextBox 上打开触摸键盘 windows 10 |通用应用

win10怎么打开虚拟键盘

Linux使用小记:命令行打开/禁用触摸板鼠标