键事件处理程序不会在表单级别触发
{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");
}
上面的事件处理程序永远不会触发。但窗体的子控件的处理程序会这样做。会出现什么问题呢?
{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");
}
The above event handler never fires. But the form's child controls' handler does. What would be the problem ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除了事件处理程序之外,您还需要设置表单的
KeyPreview
属性设置为true
。根据 MSDN:In addition to having your event handler, you need to set the form's
KeyPreview
property totrue
. According to MSDN: