如何在TextChanged中获取新文本?

时间:2013-01-15 11:49:33

标签: c# events text textbox

在TextBox中,我正在监视文本更改。在做一些事情之前我需要检查文本。但我现在只能检查旧文本。我怎样才能获得新文本?

private void textChanged(object sender, EventArgs e)
{
    // need to check the new text
}

我知道.NET Framework 4.5有新的TextChangedEventArgs类,但我必须使用.NET Framework 2.0。

4 个答案:

答案 0 :(得分:15)

获取新值

您可以使用Text的{​​{1}}属性。如果此事件用于多个文本框,那么您需要使用TextBox参数来获取正确的sender控件,如此...

TextBox

获取OLD值

对于那些希望获得旧价值的人,您需要自己跟踪。我建议一个简单的变量开始为空,并在每个事件结束时更改:

private void textChanged(object sender, EventArgs e)
{
    TextBox textBox = sender as TextBox;
    if(textBox != null)
    {
        string theText = textBox.Text;
    }
}

您可以创建自己的TextBox控件,该控件继承自内置控件,并添加此附加功能,如果您打算大量使用它。

答案 1 :(得分:2)

查看textbox events,例如KeyUp,KeyPress等。例如:

private void textbox_KeyUp(object sender, KeyEventArgs e)
{
    // Do whatever you need.
}

也许这些可以帮助您实现所需的目标。

答案 2 :(得分:0)

即使使用较旧的.net fw 2.0,如果不在textbox.text属性中,你仍然应该在eventArgs中拥有new和old值,因为事件是在文本更改之后而不是在文本更改期间触发的。

如果您想在更改文本时执行操作,请尝试KeyUp事件,而不是更改。

答案 3 :(得分:-1)

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.
    }
}