如何關閉我的C#WinForms程序,同時存在一些控件,如樹視圖,按鈕和其他東西存在於其中,並且它們具有焦點,並且可能它們具有相同鍵盤快捷鍵?如何在控件擁有焦點時用鍵盤關閉WinForm
例如在我的樹視圖中,如果按下ALT + ESC鍵,節點將被刪除。但我希望能夠通過按下ESC鍵來調用'this.Close()'方法,而不管任何控件是否具有焦點。
謝謝。
如何關閉我的C#WinForms程序,同時存在一些控件,如樹視圖,按鈕和其他東西存在於其中,並且它們具有焦點,並且可能它們具有相同鍵盤快捷鍵?如何在控件擁有焦點時用鍵盤關閉WinForm
例如在我的樹視圖中,如果按下ALT + ESC鍵,節點將被刪除。但我希望能夠通過按下ESC鍵來調用'this.Close()'方法,而不管任何控件是否具有焦點。
謝謝。
也許你可以通過覆蓋在Form
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Escape)
{
this.Close();
return true;
}
else
return base.ProcessDialogKey(keyData);
}
將您的表格的屬性設爲KeyPreview
屬性爲true。這允許您在控制處理程序之前處理表單處理程序中的鍵盤消息,即使控件具有焦點。
您需要將表單的KeyPreview
屬性設置爲true
。這將使表單在傳遞到其上的控件之前捕獲按鍵,這使得您可以攔截它們並在需要時傳遞它們,或者執行其他操作,如使用組合鍵關閉表單。
設置窗體爲true的KeyPreview
財產試試這個(它將把keyborad事件的控件之前形成。),並在編寫代碼KeyXXX事件,並檢查ESC鍵和呼叫this.close()
它已經內置到Windows中。 Alt-F4將關閉前臺應用程序。你不需要做任何特別的事情來處理這個問題。如果你只想關閉一個窗口,而不是整個應用程序,比如在一個MDI風格的界面中,那麼Ctrl-F4就可以實現。
這是真的,但按ESC比alt f4組合更容易,特別是當用戶必須做很多! – 2011-05-12 23:56:27
我會反駁。您可以構建一個特定於您的應用程序的「更簡單」替代方案,但向您的用戶教授標準密鑰將幫助他們在所有應用程序中使用它們。如果標準已經存在,儘量不要發明替代品。 – Mel 2011-05-13 11:24:04