如何在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。

如何在TextChanged中获得新文本

获取新值

你可以利用TextBoxText性质。如果此事件用于多个文本框,那么您将需要使用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.
    }
}