2009-06-23 17 views
3

我有一個簡單的模式形式,我想要關閉時Esc被按下。處理form_KeyDown事件很簡單。問題在於表單上的控件。當表單第一次啓動其中一個按鈕時獲得焦點並按Esc當然不會做任何事情。禁用每個按鈕的TabStop可以防止這種情況,但當使用任何按鈕時,Esc將停止工作。有沒有辦法做到這一點,然後處理表格上的每個控件的KeyDown捕捉按鍵的形式,但不是控件

回答

4

您需要將窗體上的KeyPreview屬性設置爲true,並處理表單previewkeydown事件。

+0

這就是它,謝謝。 – dstr 2009-06-23 18:01:01

8

你的表單是否有「取消」按鈕?

如果是這樣,則將該表格的CancelButton屬性設置爲該按鈕。

這將關閉窗體,當按下Esc時。

+0

+1這是最簡單的。 – 2009-08-26 15:22:20

0

我想在Compact Framework應用程序中做更多或者更少的事情(我想讓表單捕獲F1..Fn鍵並以全局方式處理它們,同時讓控件處理光標& numeric鍵)。 上述Simon P Stevens的解決方案非常適合桌面.NET,但不支持PreviewKeyDown。所以我的解決辦法是:

  • 加載表單時,使用For Each ctl As Control In ControlsAddHandler ctl.KeyDown, AddressOf OnControlKeyDown

  • 創建OnControlKeyDown登記每個控件的KeyDown處理程序,爲FN按鍵也做特殊處理。所有其他擊鍵都保持原樣。

這似乎是實現這個爲Compact Framework的一個相當簡單的方法。