2009-09-07 131 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