wpf - 从自动 Win10 键盘显示“隐藏”文本框
问题描述
我的目标是在用户单击文本框时显示 Windows 10 屏幕键盘。
如果在设置中启用了特定选项,Windows 10 可以选择自动显示其屏幕键盘,即使在平板电脑模式之外也是如此。
但是,在使用 WPF 应用程序时,这种逻辑似乎存在一些严重问题 - 闪烁、根本不显示等。如果您有触摸屏 Win10 设备,您可以在带有多个文本框的简单 WPF 应用程序上轻松测试它。
所以,我决定自己控制键盘,现在可以完美运行,禁用自动键盘显示选项。但是,我不能确保每个用户 Windows 10 都会禁用此选项,因此我想让 Windows “忽略”我的 WPF 应用程序中的文本框单击,因此只有应用程序本身控制键盘可见性。
所以,我的问题是 - 有没有办法让 Windows 忽略对特定文本框的关注?
PS。如果没有明确的方法可以做到这一点,我将不胜感激有关 Windows 如何实际获取有关正在编辑的 WPF 文本框的信息的任何提示,因此我可以使用我自己的 TextBox 实现,这不会触发此逻辑。
更新:
FrameworkElementAutomationPeer
看来,可以通过使用而不是TextBoxAutomationPeer
在自定义实现中删除“钩子”键盘用于找出文本框的焦点,TextBox
但这破坏了在自动化中使用此文本框的可能性(我不喜欢)。
解决方案
我没有要测试的触摸屏设备 - 但从我的快速鼠标点击测试中我看到有一个 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;
不确定这是否会有所帮助,因为我无法测试它抱歉
推荐阅读
- vba - 此代码在 .OpenRecordset 处生成错误 3061
- matlab - 欧拉法设置 h 值
- ios - numberOfRowsInSection 调用了未重新加载的部分
- python - 有没有办法重新启动一个scrapy爬虫?
- python - Python - “虽然不是 var”
- javascript - PWA 使用特定 URL 启动 Safari 浏览器
- c# - 使用 C# 和 Xamarin 从 Visual Studio 中的 UITableViewController 调用 Instantiate UIViewController
- javascript - 如何在 d3.js 中创建“平面图”?
- node.js - Fastify 本地时间的 prettyPrint 登录?
- explorer - 在 Windows 10 中以管理员用户身份运行 explorer.exe