Ключевые обработчики событий не запускаются на уровне формы - PullRequest
2 голосов
/ 29 октября 2010
{Form constructor}
this->KeyDown += gcnew KeyEventHandler(this, &Form::Form_KeyDown);
...

void Form1::Form_KeyDown(Object^ Sender, KeyEventArgs^ E)
{
   MessageBox::Show("Key = " + E->KeyCode.ToString(), "Test");
}

Вышеуказанный обработчик событий никогда не срабатывает.Но обработчик дочерних элементов управления формы делает.В чем будет проблема?

1 Ответ

2 голосов
/ 29 октября 2010

Помимо того, что у вас есть обработчик событий, вам нужно установить для свойства KeyPreview формы значение true. По данным MSDN:

Если для этого свойства установлено значение true, форма будет получать все события KeyPress, KeyDown и KeyUp. После того, как обработчики событий формы завершили обработку нажатия клавиши, нажатие клавиши назначается элементу управления с фокусом.

...