如何在KeyDown事件期间捕获TextBox的Text?

时间:2011-12-21 00:04:14

标签: c# wpf events textbox

我正在尝试编写一个过滤ListBox的网页,具体取决于textbox的内容。我已经完成了其他所有工作,但是我希望ListBox对TextBox中发生的每个KeyDown事件应用过滤器。问题是,当我捕获KeyDown事件然后尝试查看TextBox.Text属性时,它仍然是空的。我想这是因为TextBox只能在失去焦点时更新Text属性。

有关如何在TextBox事件期间在KeyDown中获取当前文本而不必在每个KeyDown期间捕获并重建字符数组的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:5)

Manual

  

对于键盘输入,WPF首先发送相应的KeyDown / KeyUp事件。如果未处理这些事件且键是文本的(而不是方向箭头或功能键等控制键),则会引发TextInput事件。

在KeyDown事件中,您可以捕获按下的键:

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

事件退出后,按下的键将添加到.Text属性,因此下次引发KeyDown事件时,您可以从.Text读取先前输入的字符。

答案 1 :(得分:2)

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

       MessageBox.Show(tb.Text);
     }
}