Как обнаружить более одного нажатия клавиш одновременно в C #? - PullRequest
1 голос
/ 12 сентября 2010

Я работаю в редакторе карт для своей игры и использую клавиши со стрелками для прокрутки области карты. В настоящее время я использую событие KeyDown, которое прекрасно работает для прокрутки вверх, вниз, влево или вправо, но мой вопрос заключается в том, как разрешить диагональную прокрутку. В настоящее время, если я удерживаю стрелку вправо, а затем (удерживая стрелку вправо), затем нажимаю и удерживаю стрелку вниз, направление вниз заменяет прокрутку вправо, а не прокрутку по диагонали вниз вправо. *

Есть ли способ, например, чтобы я мог проверить, нажата ли другая клавиша со стрелкой во время события KeyDown? Как я могу отреагировать на удержание нескольких клавиш?

Спасибо

Ответы [ 2 ]

4 голосов
/ 12 сентября 2010

Не легко, нажатие клавиши 2-го нажатия клавиши останавливает 1-е повторение.Что вам нужно сделать, это записать, что ключ не работает в событии KeyDown.Отмените это состояние в событии KeyUp.Затем используйте таймер (~ 250 мсек) и в его событии Tick проверьте состояние клавиш.

1 голос
/ 12 сентября 2010

Самый простой способ сделать это - использовать вызов API Windows, чтобы получить состояние каждой клавиши на клавиатуре, а затем проверить интересующие вас клавиши: GetKeyboardState через PInvoke .

Вы можете вызвать его с помощью KeyDown / KeyUp, проверить состояние клавиатуры и действовать соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...