2009-02-19 75 views
1

我想在用戶開始輸入內容時激活搜索文本框(即使文本框未被聚焦)。我已經將表格上的KeyPreview設置爲true。然後在KeyDown事件處理程序中,我有這個:C#:用戶開始輸入時激活文本框

if(!searchTextBox.Focused) 
{ 
    searchTextBox.Focus(); 
} 

這幾乎可行。該文本框是重點,但第一個鍵入的字母丟失。我想這是因爲文本框從來沒有真正得到這個事件,因爲它發生時沒有集中注意力。那麼,有沒有人有一個聰明的解決方案,讓我可以像這樣工作?

我還想了解如何使這隻發生在常規按鍵被按下時的一些提示。所以不是像箭頭鍵,修飾鍵,功能鍵等等。但是,我可能會想出一個辦法。另一方面,我不太確定我應該如何解決......

回答

4

作爲對SDX2000答案的補充,查看KeyDown事件的MSDN article。它也指的是事件,它在KeyDown事件之後觸發,我認爲它更適合你想要做的事情。

引用MSDN:

甲KeyPressEventArgs指定當用戶按下一個鍵,它由該字符。例如,當用戶按下SHIFT + K,作爲keyChar屬性返回一個大寫字母K.

private void YourEventHandler(object Sender, KeyPressEventArgs Args) 
{ 
    if(!searchTextBox.Focused) 
    { 
     searchTextBox.Focus(); 
     searchTextBox.Text += Args.KeyChar; 
     // move caret to end of text because Focus() selects all the text 
     searchTextBox.SelectionStart = searchTextBox.Text.Length 
    } 
} 

實際上,我不能確定是否可以使用+=爲char追加到一個字符串,所以你需要檢查一下。而且我不知道用戶點擊return時會發生什麼情況,最好還是跟進該問題。

+0

+ =似乎工作。雖然該屬性被稱爲文本,而不是值。所以你可以在你的例子中解決這個問題:) – Svish 2009-02-19 08:32:10

3

您將在KeyDown事件中獲得第一個關鍵筆劃。你可以自己將它保存到文本框中。

+1

但這是如何與非ASCII字母和東西?尤其是在考慮使用各種修飾鍵等... – Svish 2009-02-19 08:13:16

相關問題