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只在回车、焦点更改等时触发。