2014-03-05 121 views
2

我有一個用於應用程序和文本框的UserControl。按下此文本框中的回車鍵時,應激活一個按鈕(基本上按下「確定」按鈕,而不是用鼠標手動點擊按鈕)。按下在UserControl中輸入時KeyDown事件不會觸發

所以我增加了一個KeyDown事件對我的文本框,並執行以下代碼:

private void txtSearchID_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter && !txtSearchID.Text.Equals(string.Empty)) 
    { 
     button_Click(null, null); 
    } 
} 

但是,當我想測試這個沒什麼按下Enter鍵時發生。奇怪的是,除了按下Enter鍵後,事件甚至不會被觸發,而是與其他鍵一起被觸發。我錯過了什麼嗎?

回答

8

這是因爲,當按下某個鍵時,它將轉到控件,該控件將焦點放在窗體上,因爲默認情況下Form的KeyPreview屬性設置爲False。你改變了事件這樣

更改爲keyUp事件,

private void txtSearchID_Keyup(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter && !txtSearchID.Text.Equals(string.Empty)) 
    { 
     button_Click(null, null); 
    } 
} 
+0

這幫助,感謝這麼簡單的解決方案。 :) –

相關問題