C # Windows Form: как получить функцию захвата, стрелки и клавиши навигации - PullRequest
2 голосов
/ 19 марта 2011

Я пытаюсь захватить функциональные клавиши с F1 по F12 и 4 клавиши со стрелками & Home, Вставить, Удалить, Завершить, Page Up и Down. Как сделать ????

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
}

1 Ответ

1 голос
/ 19 марта 2011

Переопределить метод ProcessCmdKey () формы.Он вызывается прямо из цикла сообщений, прежде чем сообщение клавиатуры отправляется в элемент управления с фокусом.Вот почему переопределение WndProc () не работает.

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (keyData == (Keys.Control | Keys.F)) {
            MessageBox.Show("What the Ctrl+F?");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

Технически вы также можете переопределить метод OnKeyDown формы с помощью KeyPreview = true, но это ужасный анахронизм VB6.

...