C# winforms中未触发Esc键事件
我的Esc键事件似乎没有被触发 我有两张表格 在form1按钮单击事件中C# winforms中未触发Esc键事件,c#,winforms,events,C#,Winforms,Events,我的Esc键事件似乎没有被触发 我有两张表格 在form1按钮单击事件中 Form2 frm2 = new Form2(); frm2.show(); 在表格2中,我有一个叫做 private void frm2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) this.Hide(); } 这有什么问题?如果焦点位于子控件中,则需要设置 fr
Form2 frm2 = new Form2();
frm2.show();
在表格2中,我有一个叫做
private void frm2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
this.Hide();
}
这有什么问题?如果焦点位于子控件中,则需要设置
frm2.KeyPreview = true;
在窗体的事件处理程序中处理关键事件
或在窗体的加载事件处理程序或构造函数中:
this.KeyPreview = true;
如果焦点位于子控件中,则需要设置
frm2.KeyPreview = true;
在窗体的事件处理程序中处理关键事件
或在窗体的加载事件处理程序或构造函数中:
this.KeyPreview = true;
嗨,谢谢你的快速回复。。但是我可以知道我把这个放在哪里吗?在表格1或表格2中?实际上,我把它放在form2页面加载事件中,如下所示。。form2 frm2=新的form2();frm2.keypreview=真;但还是一样result@Nagu:如果您在load事件处理程序中执行此操作,那么您正在创建一个KeyPreview==true的表单的新实例。那不是你想做的。将“this.KeyPreview=true;”放在表单的加载处理程序或构造函数中。嘿,它工作得很好,但问题是,当我放置调试器时,只有它在工作,否则它不工作。。这里面的逻辑是什么?@Nagu:很难说。不是为我做的。@Nagu:你有没有为表单设置取消按钮?如果是这样,那可能就是原因(见亨克的答案)嗨,谢谢你的快速回复。。但是我可以知道我把这个放在哪里吗?在表格1或表格2中?实际上,我把它放在form2页面加载事件中,如下所示。。form2 frm2=新的form2();frm2.keypreview=真;但还是一样result@Nagu:如果您在load事件处理程序中执行此操作,那么您正在创建一个KeyPreview==true的表单的新实例。那不是你想做的。将“this.KeyPreview=true;”放在表单的加载处理程序或构造函数中。嘿,它工作得很好,但问题是,当我放置调试器时,只有它在工作,否则它不工作。。这里面的逻辑是什么?@Nagu:很难说。不是为我做的。@Nagu:你有没有为表单设置取消按钮?如果是这样的话,那可能是导致(见亨克的答案)可能重复的原因