从自动Win10键盘显示“隐藏”文本框

时间:2018-05-02 08:57:17

标签: wpf windows-10 on-screen-keyboard

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

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

然而,当使用WPF应用程序时,这个逻辑似乎有一些严重的问题 - 闪烁,根本没有显示等。如果你有触摸屏Win10设备,你可以在带有几个文本框的简单WPF应用程序上轻松测试它。

所以,我决定自己控制键盘,现在效果很好,禁用了自动键盘显示选项。但是,我无法确保每个用户Windows 10都禁用此选项,因此我想在我的WPF应用程序中对Windows文本框进行“忽略”点击,因此只有应用程序本身才能控制键盘可见性。

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

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

更新

FrameworkElementAutomationPeer的自定义实现中,通过使用TextBoxAutomationPeer代替TextBox,可以删除“钩子”键盘用于查找文本框的重点,然而,这可能会在自动化中使用这个文本框(我不喜欢)。

1 个答案:

答案 0 :(得分:1)

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

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

这怎么能让它无法获得键盘输入,所以可能在TextBox上添加另一种方法,如:

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

不确定这会有所帮助,因为我一直无法测试对不起