{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");
}
以上事件处理程序永远不会触发。但是表单的子控件'处理程序确实如此。会出现什么问题?
答案 0 :(得分:2)
除了拥有事件处理程序之外,还需要将表单的KeyPreview
属性设置为true
。根据MSDN:
当此属性设置为true时,表单将接收所有KeyPress,KeyDown和KeyUp事件。在表单的事件处理程序完成按键处理后,键击将被分配给具有焦点的控件。