Переопределение поведения Windows Forms по умолчанию для некоторых ключевых событий - PullRequest
2 голосов
/ 23 ноября 2011

Я создал Form с простой игрой.Игра требует ввода с клавиш со стрелками, среди прочего, но несколько кнопок, которые я поместил в форму, крадут эти ключевые события.

Насколько я понимаю, это поведение по умолчанию любого приложения Windows Formsдля того, чтобы пользователь мог менять фокус между различными элементами управления.

Мой вопрос: как мне обойти это и убедиться, что я могу использовать ввод с этих клавиш?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Вы можете переопределить метод Form.ProcessCmdKey, чтобы иметь возможность обрабатывать каждое нажатие клавиши пользователем.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Down || keyData == Keys.Up)
    {
        // Process keys

        return true;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

Возвращает true сигналы о том, что дальнейший процесс не должен выполняться, и поведение по умолчаниюключа не будет иметь никакого эффекта.Например, вы больше не сможете перемещать фокус между элементами управления с помощью клавиши TAB , поэтому вам, вероятно, следует возвращать значение true только для нажатий клавиш, которые обрабатываются только игрой.

0 голосов
/ 23 ноября 2011

Переопределить метод OnKeyDown формы. И не забудьте позвонить base.OnKeyDown в конце.

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