我正在尝试编写一个过滤ListBox
的网页,具体取决于textbox
的内容。我已经完成了其他所有工作,但是我希望ListBox对TextBox中发生的每个KeyDown
事件应用过滤器。问题是,当我捕获KeyDown事件然后尝试查看TextBox.Text属性时,它仍然是空的。我想这是因为TextBox只能在失去焦点时更新Text属性。
有关如何在TextBox
事件期间在KeyDown
中获取当前文本而不必在每个KeyDown
期间捕获并重建字符数组的任何想法?
谢谢!
答案 0 :(得分:5)
对于键盘输入,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);
}
}