如何在TextChanged中获得新文本
本文关键字:新文本 文本 TextChanged | 更新日期: 2023-09-27 17:53:07
在一个文本框中,我正在监视文本的变化。在做其他事情之前,我需要检查一下文本。但我现在只能查看旧文本。如何获取新文本?
private void textChanged(object sender, EventArgs e)
{
// need to check the new text
}
我知道。net Framework 4.5有新的TextChangedEventArgs
类,但我必须使用。net Framework 2.0。
获取新值
你可以利用TextBox
的Text
性质。如果此事件用于多个文本框,那么您将需要使用sender
参数来获得正确的TextBox
控件,如下所示…
private void textChanged(object sender, EventArgs e)
{
TextBox textBox = sender as TextBox;
if(textBox != null)
{
string theText = textBox.Text;
}
}
获取旧值
对于那些希望获得旧值的人,您需要自己跟踪该值。我建议使用一个简单的变量,开始为空,并在每个事件结束时更改:
string oldValue = "";
private void textChanged(object sender, EventArgs e)
{
TextBox textBox = sender as TextBox;
if(textBox != null)
{
string theText = textBox.Text;
// Do something with OLD value here.
// Finally, update the old value ready for next time.
oldValue = theText;
}
}
您可以创建自己的TextBox控件,继承内置的TextBox控件,并添加这个额外的功能,如果您打算大量使用它。
查看文本框事件,如KeyUp, KeyPress等。例如:
private void textbox_KeyUp(object sender, KeyEventArgs e)
{
// Do whatever you need.
}
即使使用较旧的。net fw 2.0,如果不在文本框中,您仍然应该在eventArgs中拥有新旧值。文本属性本身,因为事件是在文本更改之后而不是在文本更改期间触发的。
如果你想做的东西,而文本正在改变,然后尝试KeyUp事件,而不是改变。
private void stIDTextBox_TextChanged(object sender, EventArgs e)
{
if (stIDTextBox.TextLength == 6)
{
studentId = stIDTextBox.Text; // Here studentId is a variable.
// this process is used to read textbox value automatically.
// In this case I can read textbox until the char or digit equal to 6.
}
}