我正在创建 Windows 8.1 应用程序,在用户按下按钮后,会在大部分屏幕上打开一个弹出窗口。弹出框内有几个文本框。
我找到了 this来自微软的关于如何检测屏幕键盘外观的示例代码。
我还发现以下 SO 帖子和网站基本上告知无法强制关闭键盘,而正确的做法实际上是以编程方式将隐藏元素聚焦在页面上或禁用然后重新 -启用文本框:
- Forcing Windows 8 soft keyboard to hide
- Windows 8 soft keyboard not hidden
- Show/Hide Keyboard Automatically Widnows 8
- How to Dismiss Touch Keyboard
所以我听从了建议并创建了一个不可见的按钮。当用户点击关闭按钮时,应该将焦点放在该按钮上并关闭键盘。发生的情况是文本框确实失去了焦点,但键盘并没有消失。如果我使关闭按钮将焦点放在隐藏按钮上 并 关闭弹出窗口(这是所需的效果),则键盘不会消失,直到 View (以前在弹出窗口下)出现敲击。
如何让关闭弹出窗口导致键盘关闭?
编辑:似乎有一种方法可以以编程方式关闭键盘,因为在键盘打开时触发应用栏打开会自动关闭键盘。
最佳答案
当显示虚拟键盘的文本框被禁用时,它将关闭虚拟键盘。所以解决方案是将文本框属性 IsEnabled 设置为 false,然后再次将其设置为 true,以便再次使用。
TextBox.KeyDown += (s, a) => {
if (a.Key == VirtualKey.Enter) {
TextBox.IsEnabled = false;
TextBox.IsEnabled = true;
}
关于c# - 即使焦点更改后键盘也不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858141/