2010-05-05 52 views
3

您可能不知道這一點,但在ComboBox上按下F4鍵使其顯示下拉項目列表。我相信這是Windows上的默認行爲。如何禁用顯示組合框中的項目的F4鍵

有誰知道如何覆蓋此行爲在WPF(C#)?

我知道覆蓋的默認行爲通常被認爲是不好的做法,但在這種情況下,我有一個運行XP Embedded的耐用設備。它有幾個突出的功能鍵(F1 - F6)需要觸發不同的事件。這工作正常,但是當關注ComboBox時,由於ComboBox下拉,事件不會被觸發。

我已經嘗試了形式與日俱在ComboBox捕捉KeyDown事件和監聽F4鍵,但是它不會走到這一步的按鍵必須在較低的水平進行處理。

任何想法?

回答

3

我對XP Embedded沒有正面評價,但是在普通的ol XP上,這是有效的。使用PreviewKeyDown,並將e.Handled設置爲true:

public MyWindowOrControl() 
{ 
    InitializeComponent(); 
    cboTest.PreviewKeyDown += new KeyEventHandler(cboTest_PreviewKeyDown); 
} 

void cboTest_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.F4) 
     e.Handled = true; 
} 
+1

優秀,使用PreviewKeyDown而不是KeyDown作品。 上的區別的一些信息之二: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/f05377aa-8894-4b51-a87e-2e2771f20cd6 的http:// blogs.msdn.com/jfoscoding/archive/2006/01/26/518181.aspx – 2010-05-06 08:23:49

+0

我在XP上對此進行了嘗試,對於我來說,PreviewKeyDown在按F4時不會觸發 – 2011-11-18 15:18:58

0

你可以製作你自己的ComboBox類,只是從舊的繼承..你應該希望能夠覆蓋keydown/up方法。

+0

嘗試了此操作,但不幸的是它無法正常工作。 – 2010-05-06 08:23:04

相關問題