2015-11-19 13 views
0

Мне понадобится (в WinForm), если нажата клавиша A, событие запускается. Я получил этот код с сайта MSDN:Событие KeyDown не работает

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode != Keys.A) 
    { 
      MessageBox.Show("Key 'a' was pressed."); 
    } 
} 

Проблема заключается в том, что этот код не работает для меня, нет сообщений об ошибке, но если я в форме и нажмите клавишу A нет события. Я пытался использовать точки останова, но он никогда не входит в if.

В чем проблема?

+0

Ну, для одного, у вас есть '! =', Что означает поиск ключа, который * не * 'Keys.A'. Кроме того, вам, вероятно, еще придется добавить эту функцию в событие keydown формы (вы можете использовать конструктор). – nanny

ответ

2

Вам необходимо установить Form.KeyPreview на True. Это свойство получает или задает значение, указывающее, будет ли форма получать ключевые события до того, как событие будет передано элементу управления с фокусом.

Также обратите внимание, что в вашем коде есть ошибка; в соответствии с вашим сообщением вам необходимо проверить, e.KeyCode == Keys.A.

+0

ОК, по крайней мере, есть некоторая форма ответа. Но нет, если я нажму клавишу A. Вместо этого, если я нажму SPACE, появится MessageBox. –

+0

Thats, потому что ваш оператор if говорит об этом. Если 'e.KeyCode НЕ EQUAL Keys.A' ... – KDecker

+0

@KDecker О, боже, я глуп. Спасибо за ответ! –

Смежные вопросы