Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# winforms中未触发Esc键事件_C#_Winforms_Events - Fatal编程技术网

C# winforms中未触发Esc键事件

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

我的Esc键事件似乎没有被触发

我有两张表格

在form1按钮单击事件中

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:你有没有为表单设置取消按钮?如果是这样的话,那可能是导致(见亨克的答案)可能重复的原因