当用户开始在我的应用程序中的任意位置键入内容时,我想给予文本框焦点。
我的页面继承自LayoutAwarePage。
这能实现吗?
编辑: 我得到了这个代码:
// In constructor
Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
// Somewhere else in class
void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
this.setSearchboxFocus((int)args.VirtualKey);
}
private void setSearchboxFocus(int keyCode)
{
if (keyCode == 38)
return;
if (keyCode == 40)
return;
if (this.searchBox.FocusState == Windows.UI.Xaml.FocusState.Unfocused)
{
this.searchBox.Text = "";
this.searchBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}
}
最佳答案
对于将来阅读此帖子的任何人来说,这是因为 webview。我在 msdn forum here 上问了类似的问题。从 Windows 8.1 开始,WebView 被实现为一个单独的窗口,并在获得焦点时完全窃取所有键盘输入,而不将任何键盘输入传递给控制应用程序。如果您能够更改被调用网站中的 HTML,则可以使用 javascript 监听器在应用程序和 webview 之间传递事件,但我自己没有对此进行测试。不幸的是,目前似乎没有任何其他解决方法。
关于c# - 按键时将焦点集中到文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953235/