C# 如何在Winforms文本框中每次按键后获取当前文本?

C# 如何在Winforms文本框中每次按键后获取当前文本?,c#,.net,winforms,textbox,C#,.net,Winforms,Textbox,当用户在文本框中键入时,我尝试在列表视图中过滤项目列表,我使用KeyDown和KeyPress事件,但当我读取TextBox.Text时,它总是在最后一次按键之前返回文本。是否有一种方法可以在不按enter键的情况下始终获取文本框中显示的内容?使用事件(从控件继承) 在文本属性值更改时发生 我的建议是尽量不要使用按键事件(向下/按下/向上)-还有其他方法可以更改文本框的文本,例如从右键单击上下文菜单粘贴文本。这不涉及按键。使用事件(从控件继承) 在文本属性值更改时发生 我的建议是尽量不要使用按键

当用户在
文本框中键入
时,我尝试在
列表视图中过滤项目列表,我使用
KeyDown
KeyPress
事件,但当我读取
TextBox.Text
时,它总是在最后一次按键之前返回文本。是否有一种方法可以在不按enter键的情况下始终获取
文本框中显示的内容?

使用事件(从
控件继承)

在文本属性值更改时发生

我的建议是尽量不要使用按键事件(向下/按下/向上)-还有其他方法可以更改文本框的文本,例如从右键单击上下文菜单粘贴文本。这不涉及按键。

使用事件(从
控件继承)

在文本属性值更改时发生


我的建议是尽量不要使用按键事件(向下/按下/向上)-还有其他方法可以更改文本框的文本,例如从右键单击上下文菜单粘贴文本。这不需要按键。

您可以使用相关文本框的
TextChanged
事件。我认为
KeyUp
事件可能也会起作用。

您可以使用相关文本框的
TextChanged
事件。我认为
KeyUp
事件可能也会起作用。

使用。

使用。

您可以尝试使用KeyPress事件:

int position = textBox1.SelectionStart;
string changedText = textBox1.Text.Insert(position, e.KeyChar.ToString());

您可以尝试使用按键事件:

int position = textBox1.SelectionStart;
string changedText = textBox1.Text.Insert(position, e.KeyChar.ToString());

对于实际的原始问题,前面的回答是不完整的:当用户刚刚按下一个键(包括该按键)时,如何检索
文本
属性的内容

KeyUp
事件恰好在
Text
属性的内容实际更改后触发,因此使用此特定的事件顺序,您可以仅使用
KeyUp
事件处理程序检索文本内容的最新值


KeyPress
事件不起作用,因为在
Text
属性更改之前会触发该事件。

对于实际的原始问题,前面的答案不完整:当用户刚刚按下一个键时,如何检索
Text
属性的内容(包括那个按键)

KeyUp
事件恰好在
Text
属性的内容实际更改后触发,因此使用此特定的事件顺序,您可以仅使用
KeyUp
事件处理程序检索文本内容的最新值


KeyPress
事件不起作用,因为它在
Text
属性更改之前被触发。

谢谢,不知怎的,我以为textchanged只在回车、焦点更改等时触发。谢谢,不知怎的,我以为textchanged只在回车、焦点更改等时触发。