Как получить новый текст в 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.
}
}