Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只有在UI c#metro中按住已单击的按钮时,按键按下才有效_C#_Windows Store Apps - Fatal编程技术网

只有在UI c#metro中按住已单击的按钮时,按键按下才有效

只有在UI c#metro中按住已单击的按钮时,按键按下才有效,c#,windows-store-apps,C#,Windows Store Apps,我有个奇怪的问题。 我制作了一个应用程序,它必须对键盘键(1,2,3,4,…)做出反应,但它没有。 实际上是这样的,但只有当我点击一个按钮并按住它时,如果我放开它,按键,再次,停止反应 我使用的方法是KeyDown,它位于页面 XAML中的KeyDown=“Page\u KeyDown” 在代码中: private void Page_KeyDown(object sender, KeyRoutedEventArgs e) { switch (e.Key)

我有个奇怪的问题。 我制作了一个应用程序,它必须对键盘键(1,2,3,4,…)做出反应,但它没有。 实际上是这样的,但只有当我点击一个按钮并按住它时,如果我放开它,按键,再次,停止反应

我使用的方法是
KeyDown
,它位于
页面

XAML中的
KeyDown=“Page\u KeyDown”

在代码中:

private void Page_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        switch (e.Key)
        {
            case Windows.System.VirtualKey.Number1:
                {
                    KeyDownHelper(1);
                    break;
                }
        }
        ...
    }
它有很多例子,但它们都很相似,我猜问题不在方法内部,而是在我的思维中


我认为问题在于页面可能会失去焦点?但不确定情况是否如此以及如何处理它听起来像是你想让你的应用程序监听单个按键,而不是只在按下按键时,对吗?在这种情况下,您应该响应键向上事件。这样,您将能够对每次按键做出反应,并忽略按下按键的次数

以下是一个链接,指向一篇有关密钥更新的MSDN文章:


这有用吗?

我想您正在寻找CoreDispatcher.AcceleratoryActivated API。
仅供参考

不,情况并非如此。它会监听所有的按键(为什么你会觉得不同呢?)问题是,它只会在我按住应用程序中点击的按钮时监听。对不起,也许我不清楚。我的意思是,如果您将代码连接到KeyUp事件而不是KeyDown事件,那么它将按照您的意愿工作。我知道,谢谢您,但它不起作用,所以我最好这样说,因为如果有人来看我,而我没有响应,他/她可能会认为它已经解决了。