只有在UI c#metro中单击按钮时,KeyDown才有效

时间:2014-06-21 15:06:29

标签: c# windows-store-apps

我有这个奇怪的问题。 我做了一个应用程序,必须对键盘键(1,2,3,4,...)作出反应,但事实并非如此。 嗯,实际上它确实如此,但只有当我点击一个按钮并按住它时,如果我让它去按键,再次停止反应。

我使用的方法是KeyDown,它放在Page

中 XAML中的

KeyDown="Page_KeyDown"

并在代码中:

private void Page_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        switch (e.Key)
        {
            case Windows.System.VirtualKey.Number1:
                {
                    KeyDownHelper(1);
                    break;
                }
        }
        ...
    }

它有很多案例,但它们都是相同的,我想问题不在方法内部,而在于我的想法。

我认为问题是页面可能会失去焦点?但不确定是否是这种情况以及如何处理它

2 个答案:

答案 0 :(得分:0)

听起来你希望你的应用程序能够监听单个按键,而不是只是当按下键时,是吗?在这种情况下,您应该响应Key Up事件。这样,您就可以对每个按键进行反应,并忽略按下按键的时间。

以下是关于Key Up:Key Up MSDN Article

的MSDN文章的链接

这有帮助吗?

答案 1 :(得分:0)

我认为您正在寻找CoreDispatcher.AcceleratorKeyActivated API。 供您参考CoreDispatcher.AcceleratorKeyActivated