Как мне захватить текст TextBox во время события KeyDown? - PullRequest
2 голосов
/ 21 декабря 2011

Я пытаюсь написать страницу, которая фильтрует ListBox в зависимости от содержимого textbox.У меня все остальное работает, но я хочу, чтобы ListBox применял фильтр к каждому событию KeyDown, которое происходит в TextBox.Проблема в том, что, когда я фиксирую событие KeyDown, а затем пытаюсь посмотреть свойство TextBox.Text, оно остается пустым.Я предполагаю, что это связано с тем, что TextBox может обновлять свойство Text только тогда, когда оно теряет фокус.

Любые мысли о том, как я могу получить текущий текст в TextBox во время события KeyDownбез необходимости захватывать и перестраивать массив символов во время каждого KeyDown?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 21 декабря 2011

Вручную :

Для ввода с клавиатуры WPF сначала отправляет соответствующие события KeyDown / KeyUp.Если эти события не обрабатываются и клавиша является текстовой (а не управляющей клавишей, такой как стрелки направления или функциональные клавиши), возникает событие TextInput.

В событии KeyDown вы можете захватитьнажатая клавиша:

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

После выхода из события нажатая клавиша добавляется в свойство .Text, поэтому при следующем возникновении события KeyDown вы можете прочитать ранее введенные символы из .Text.

2 голосов
/ 21 декабря 2011
private void OnKeyUpHandler(object sender, KeyEventArgs e)
{
    var tb = sender as TextBox;
    if (tb != null){

       MessageBox.Show(tb.Text);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...