首页 > 解决方案 > 从自动 Win10 键盘显示“隐藏”文本框

问题描述

我的目标是在用户单击文本框时显示 Windows 10 屏幕键盘。

如果在设置中启用了特定选项,Windows 10 可以选择自动显示其屏幕键盘,即使在平板电脑模式之外也是如此。

但是,在使用 WPF 应用程序时,这种逻辑似乎存在一些严重问题 - 闪烁、根本不显示等。如果您有触摸屏 Win10 设备,您可以在带有多个文本框的简单 WPF 应用程序上轻松测试它。

所以,我决定自己控制键盘,现在可以完美运行,禁用自动键盘显示选项。但是,我不能确保每个用户 Windows 10 都会禁用此选项,因此我想让 Windows “忽略”我的 WPF 应用程序中的文本框单击,因此只有应用程序本身控制键盘可见性。

所以,我的问题是 - 有没有办法让 Windows 忽略对特定文本框的关注?

PS。如果没有明确的方法可以做到这一点,我将不胜感激有关 Windows 如何实际获取有关正在编辑的 WPF 文本框的信息的任何提示,因此我可以使用我自己的 TextBox 实现,这不会触发此逻辑。

更新:

FrameworkElementAutomationPeer看来,可以通过使用而不是TextBoxAutomationPeer在自定义实现中删除“钩子”键盘用于找出文本框的焦点,TextBox但这破坏了在自动化中使用此文本框的可能性(我不喜欢)。

标签: wpfwindows-10on-screen-keyboard

解决方案


我没有要测试的触摸屏设备 - 但从我的快速鼠标点击测试中我看到有一个 TextBox.Focusable = false;

https://msdn.microsoft.com/en-us/library/system.windows.uielement.focusable(v=vs.110).aspx

这使它无法获得键盘输入,因此可以在 TextBox 上放置另一种方法,例如:

txtBoxTestFocus_MouseDown 或 txtBoxTestFocus_TouchDown 然后可以设置 txtBoxTestFocus.Focusable = true;

不确定这是否会有所帮助,因为我无法测试它抱歉


推荐阅读