2012-05-08 27 views
4

我有一個設置爲多行(我知道是更改文本框的高度的唯一方法)的窗體上有一個簡單的搜索字段並將標誌AcceptsReturn設置爲false。接受返回文本框不能正常工作

但是,當我按下該控件中的回車鍵時,而不是像它應該那樣激活默認按鍵,它會放入返回字符。

現在,我還試圖使用KeyPress事件來檢查是否已按下Enter鍵來激活搜索按鈕單擊功能,希望它能覆蓋此返回行爲 - 但它沒有。現在它只是運行搜索並插入一個返回字符。

我正在運行Visual Studio 2010(雖然這個問題似乎在2008年也出現在我將它轉換之前)和C#.NET 2.0。任何解決方案

+0

請不要用「C#.NET」等標題來標題。這就是標籤的用途。另外,我認爲這是Windows窗體? –

+0

這是正確的。 – CJxD

+2

我只是試圖複製你的問題沒有成功。我用一個按鈕和一個文本框(多行)創建了一個新窗體,我將textbox.accept返回爲false。我將表單接受按鈕設置爲button1(我的按鈕)按鈕單擊事件觸發了一個消息框。當我鍵入一些東西並按下輸入時,它會觸發消息框,並且不會向文本框添加返回字符。你確定你設置了表單接受按鈕嗎? –

回答

4

該表格有一個名爲AcceptButton的屬性。是否指向您正在調用默認按鈕的按鈕?

我剛剛寫了一個小測試,它似乎爲我工作。

+0

這確實是問題。對於我的特殊情況,我可以在進入特定搜索欄時以編程方式設置主窗體的接受按鈕。現在它正常工作! – CJxD

+1

請注意,如果將AcceptsReturn設置爲true,那麼它將停止工作。這是財產真正做到的。你在文本中得到了回報,因爲你忘記了e.SuppressKeyPress = e.Handled = true; –

5

我看到一個答案已經發布,其中提到的AcceptButton財產,但我想我會說出更清楚爲什麼這是必要的:暗忖MSDN,在AcceptsReturn,「如果沒有默認按鈕的形式,ENTER鍵將始終在控件中創建一行新文本,而不考慮此屬性的值。「 (我剛剛嘗試了一個虛擬表單 - 通過「默認按鈕」,他們確實意味着表單的AcceptButton屬性,一個集合中,AcceptsReturn的值有所不同;沒有一個,它沒有任何作用。)

對於KeyPress來說,雖然這顯然不是這種情況下的最佳方式,但我不得不在過去使用這樣的技巧 - 您是否記得在您自己處理事件的情況下將e.Handled設置爲true?

+0

感謝e.Handled提示,我甚至不知道這存在! – CJxD