VirtualKey 检测何时被按住

Posted

技术标签:

【中文标题】VirtualKey 检测何时被按住【英文标题】:VirtualKey detect when is held down 【发布时间】:2019-10-14 12:09:22 【问题描述】:

我试图让当你按下一个键时它会连续移动。但是,当按下它时,它会移动一次并等待一秒钟,然后再继续。我正在使用:

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDownAsync; 

并检查方法:

args.VirtualKey == Windows.System.VirtualKey.S;

有没有办法让它在那一秒内不暂停,我只想继续按住那个键。

【问题讨论】:

【参考方案1】:

这里你不能影响系统上报KeyDown事件的速度,但你也可以订阅KeyUp,并假设在KeyDown第一次上报之间按下该键直到出现相应的KeyUp -

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
Window.Current.CoreWindow.KeyUp += CoreWindow_KeyUp;

还有方法:

private void CoreWindow_KeyDown(
   Windows.UI.Core.CoreWindow sender, 
   Windows.UI.Core.KeyEventArgs args)

    if (args.VirtualKey == Windows.System.VirtualKey.S)
    
        //StartMoving(); (or keep moving if already started previously)
    


private void CoreWindow_KeyUp(
   Windows.UI.Core.CoreWindow sender, 
   Windows.UI.Core.KeyEventArgs args)

    if (args.VirtualKey == Windows.System.VirtualKey.S)
    
        //StopMoving();
    

【讨论】:

以上是关于VirtualKey 检测何时被按住的主要内容,如果未能解决你的问题,请参考以下文章

Android检测您何时按住按钮

检测两个按钮是不是被按住

本地化 VirtualKey.Control (WinRT)

检测 Viewcontroller 何时被推送

检测节点何时被删除(或因为父节点被从 DOM 中删除)

检测文件何时被拖到文件输入