2009-09-07 130 views
1

我的Esc键盘事件似乎没有被解雇。Esc键盘事件没有在winforms中被解雇

我有两种形式。

在Form1的按钮单击事件

Form2 frm2 = new Form2(); 
frm2.show(); 

在形式上2我有一个事件称为

private void frm2_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Escape) 
     this.Hide(); 

    } 

什么问题呢?

+0

可能重复http://stackoverflow.com/questions/2290959/escape-button - 关闭winform-in-c-sharp) – 2013-03-29 06:59:54

回答

5

如果焦点是在孩子的控制,你需要设置

frm2.KeyPreview = true; 

来处理表单的事件处理程序的关键事件。

或形式的负载的事件处理程序或构造:

this.KeyPreview = true; 
[退出按钮在C#关闭的WinForm](的
+0

嗨,感谢您的快速回复..但我可否知道我在哪里放置?在form1或form2?其实我把它放在form2页面加载事件是这样的.. form2 frm2 = new form2(); frm2.keypreview = true; 但仍然是相同的结果 – Nagu 2009-09-07 11:42:08

+0

@Nagu:如果你在加载事件处理程序中这样做,你正在做的是用KeyPreview == true创建一个* new *的窗体实例。这不是你想要做的。把“this.KeyPreview = true;”在表单的装载处理程序或构造函数中。 – Rytmis 2009-09-07 11:45:31

+0

嘿它很好,但事情是当我把调试器,然后只有它工作,否则它不工作..这是什么逻辑? – Nagu 2009-09-07 11:52:35