VirtualKey определяет, когда удерживается - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь получить при нажатии клавиши непрерывное движение, когда клавиша удерживается нажатой.Но когда нажимаешь, двигайся один раз и подожди секунду, прежде чем продолжить.Я использую:

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDownAsync; 

и для получения проверки в методе:

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

Есть ли способ, что он не останавливается на эту секунду, я просто хочу продолжать до тех пор, покаэта клавиша удерживается нажатой.

1 Ответ

1 голос
/ 29 мая 2019

Вы не можете влиять на скорость, с которой система сообщает о событии 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...