2013-01-15 12 views
13

In einem Textfeld überwache ich die Textänderungen. Ich muss den Text überprüfen, bevor ich etwas mache. Aber ich kann den alten Text im Moment nur überprüfen. Wie kann ich den neuen Text bekommen?Wie erhält man den neuen Text in TextChanged?

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

Ich weiß, .NET Framework 4.5 die neue TextChangedEventArgs Klasse hat, aber ich habe .NET Framework 2.0 verwenden.

+0

Verwenden Sie Webformulare oder gewinnen Sie Formulare? – Stokedout

Antwort

11

bekommen den neuen Wert

Sie können einfach verwenden, um die Text Eigenschaft des TextBox. Wenn dieses Ereignis für mehrere Textfelder verwendet wird, dann werden Sie die sender Parameter verwenden, um die richtige TextBox Kontrolle zu bekommen, wie so ...

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

der Altwert Erste

Für diejenigen, die den alten Wert erhalten möchten, müssen Sie dies selbst tun. Ich würde eine einfache Variable vorschlagen, die als leer beginnt, und Änderungen am Ende jeder Veranstaltung:

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

Sie könnten Ihr eigenes TextBox-Steuerelement erstellen, die von dem eingebauten in einem erbt, und fügt diese zusätzliche Funktionalität, wenn Sie vorhaben, dies viel zu benutzen.

+5

Ich könnte vor einem Moment schwören, ich habe nur die alte Version von Text in diesem Ereignis gesehen. Jetzt wird der Text VOR dem Ereignis geändert. Also ist die Frage jetzt überflüssig. – Bitterblue

+2

Wie erhält man stattdessen den alten Wert? – Joel

1

Werfen Sie einen Blick auf die textbox events wie KeyUp, KeyPress usw. Zum Beispiel:

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

Vielleicht können diese helfen Sie erreichen, was Sie suchen.

0

Auch mit dem älteren .net fw 2.0 sollten Sie immer noch den neuen und alten Wert im eventArgs haben, wenn nicht in der Eigenschaft textbox.text selbst, da das Ereignis nach und nicht während der Textänderung ausgelöst wird.

Wenn Sie während des Texts Änderungen durchführen möchten, versuchen Sie das KeyUp-Ereignis anstelle des Changed.

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