2012-06-04 16 views
4

有一個TextBox控制(DevExpress TextEdit要準確)一個WinForms形式裏面裏面關鍵,我做希望表單關閉時,用戶按下回車鍵,如果焦點在文本框內。如何不關閉窗體,當用戶按下輸入文本框

我想

filterTextBox.KeyDown += 
    (sender, e) => 
     e.Handled = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter; 

就足夠了,但它似乎被忽略,窗體仍關閉。

我的問題是:

如何故意忽略單行文本框控件中輸入,這樣的形式保持打開狀態?

解決方案

The solution of Botz3000工作對我來說:

filterTextBox.PreviewKeyDown += 
    (sender, e) => 
     e.IsInputKey = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter; 
filterTextBox.KeyDown += 
    (sender, e) => 
     e.Handled = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter; 

回答

6

更新:嘗試處理PreviewKeyDown事件了。 MSDN文檔在備註部分很好地解釋了它。通過將IsInputKey設置爲true,可以覆蓋默認行爲,以便TextBox可以處理該密鑰。您需要在PreviewKeyDown中執行此操作,然後像在KeyDown中那樣處理密鑰。

編輯:不工作:先前建議EnterMoveNextControl財產

+0

謝謝,@ Botz3000,剛剛嘗試過,似乎也被忽略了。 –

+1

@UweKeim我更新了我的答案。看起來你還需要處理'PreviewKeyDown',這樣就不會被TextBox忽略。 – Botz3000

+0

工作,完美,非常感謝! :-) –

1

沒有嘗試它自己,我想我會簡單地設置文本框的KeyDown一個布爾值,然後在表格最後,檢查該布爾和取消如果它被設置,則形成閉包(然後重置布爾值)。

2

根據你們的解決方案,經常RichTextBox處理PreviewKeyDown已經足夠好了。謝謝! :)

private void rtbNote_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
    { 
     e.IsInputKey = e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter; 
    } 
相關問題