c# - 按键时将焦点集中到文本框

标签 c# microsoft-metro

当用户开始在我的应用程序中的任意位置键入内容时,我想给予文本框焦点。

我的页面继承自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/

相关文章:

c# - 如何确定我的 C# 应用程序在其下运行的 "bit-ness"?

c# - 如何在C#中定义一个类

XamlParseException 无法分配给属性。绑定(bind)不适用于附加属性

c# - Endpoint 与 Windows 沉浸式项目版本 1 不兼容

c# - C#面试题

c# - 用户控件上的设计和运行时绑定(bind)错误

c# - EF Core 3.1 cosmosdb 拥有的实体

c++ - 在 Windows 8 上使用 Windows UI 自动化列出 Metro 应用程序的所有 UI 元素

javascript - 用css3实现Windows 8 Tile "Click"动画

windows-8 - 如何通过任务计划程序在启动时运行 WinRT 应用程序?