Как получить новый текст в TextChanged?

В TextBox я отслеживаю изменения текста. Мне нужно проверить текст, прежде чем делать что-то. Но я могу только проверить старый текст в данный момент. Как я могу получить новый текст?

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

Я знаю, что.NET Framework 4.5 имеет новый класс TextChangedEventArgs но мне нужно использовать.NET Framework 2.0.

Ответ 1

Получение значения NEW

Вы можете просто использовать свойство Text для TextBox. Если это событие используется для нескольких текстовых полей, вам нужно использовать параметр sender чтобы получить правильный элемент управления TextBox, например...

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

Получение значения OLD

Для тех, кто хочет получить старую ценность, вам нужно будет следить за этим. Я бы предложил простую переменную, которая начинается как пустая и изменяется в конце каждого события:

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, который наследуется от встроенного, и добавляет эту дополнительную функциональность, если вы планируете использовать это много.

Ответ 2

Посмотрите на события текстового поля, такие как KeyUp, KeyPress и т.д. Например:

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

Возможно, они могут помочь вам достичь того, что вы ищете.

Ответ 3

Даже с более старым.net fw 2.0 вы все равно должны иметь новое и старое значение в eventArgs, если не в самом свойстве textbox.text, поскольку событие запускается после, а не во время изменения текста.

Если вы хотите делать что-то, пока текст меняется, попробуйте событие KeyUp, а не "Изменено".

Ответ 4

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