2011-12-21 58 views
2

我正在嘗試編寫一個篩選ListBox的頁面,具體取決於textbox的內容。我有所有其他的東西工作,但我希望列表框應用過濾器發生在TextBox中的每個KeyDown事件。問題是,當我捕獲KeyDown事件並嘗試查看TextBox.Text屬性時,它仍爲空。我想這是由於TextBox在丟失焦點時可能只會更新Text屬性。如何在KeyDown事件期間捕獲文本框的文本?

關於如何在KeyDown事件期間獲得TextBox中當前文本的任何想法,而不必在每個KeyDown期間捕獲並重建字符數組?

謝謝!

回答

5
Manual

對於鍵盤輸入,WPF第一發送適當的KeyDown/KEYUP事件。如果這些事件沒有處理,並且鍵是文本(而不是控制鍵,如方向箭頭或功能鍵),則會引發TextInput事件。

在KeyDown事件,你可以Capture的按下的鍵:

private void OnKeyDownHandler(object sender, KeyEventArgs e) 
{ 
    Console.WriteLine(e.Key); 
} 

的情況下退出,按鍵被添加到.Text屬性後,等下次KeyDown事件引發,您可以閱讀.Text以前輸入的字符。

+1

也處理TextChanged,所以你可以通知複製粘貼 – 2011-12-21 00:11:56

+0

這不是我看到的行爲。 TextBox.Text似乎沒有被應用,直到TextBox失去焦點。 – jermny 2011-12-21 00:13:12

+1

@jermny當發生第一個KeyDown事件時,「Text」屬性將仍爲空。 – CodeCaster 2011-12-21 00:14:16

2
private void OnKeyUpHandler(object sender, KeyEventArgs e) 
{ 
    var tb = sender as TextBox; 
    if (tb != null){ 

     MessageBox.Show(tb.Text); 
    } 
} 
相關問題