关键事件处理程序不会在表单级别触发

时间:2010-10-29 05:33:50

标签: winforms events input event-handling c++-cli

{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 个答案:

答案 0 :(得分:2)

除了拥有事件处理程序之外,还需要将表单的KeyPreview属性设置为true。根据MSDN:

  

当此属性设置为true时,表单将接收所有KeyPress,KeyDown和KeyUp事件。在表单的事件处理程序完成按键处理后,键击将被分配给具有焦点的控件。