2010-10-29 51 views
2
{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"); 
} 

上述事件处理程序从不触发。但表单的子控件'处理程序呢。会有什么问题?关键事件处理程序不在表单级别触发

回答

2

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

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

+0

感谢您的极快答案! – shadeMe 2010-10-29 05:38:45

相关问题