2013-01-15 4 views
13

In un TextBox sto monitorando le modifiche del testo. Devo controllare il testo prima di fare qualcosa. Ma posso solo controllare il vecchio testo nel momento. Come posso ottenere il nuovo testo?Come ottenere il NUOVO testo in TextChanged?

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

so .NET Framework 4.5 ha la nuova TextChangedEventArgs classe, ma devo usare .NET Framework 2.0.

+0

Stai utilizzando moduli Web o moduli di richiesta? – Stokedout

risposta

11

Ottenere il nuovo valore

Si può semplicemente utilizzare la proprietà Text del TextBox. Se questo evento viene utilizzato per più caselle di testo poi si vuole utilizzare il parametro sender per ottenere il corretto TextBox di controllo, in questo modo ...

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

Ottenere il valore OLD

Per coloro che cercano di ottenere il vecchio valore, è necessario mantenerlo da soli. Vorrei suggerire una semplice variabile che inizia come vuoto, e le modifiche alla fine di ogni evento:

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

è possibile creare il proprio controllo TextBox che eredita dalla built-in uno, e aggiunge questa funzionalità aggiuntiva, se hai intenzione di usarlo molto.

+5

Potrei giurare solo un momento fa ho visto solo la vecchia versione di Testo in questo evento. Ora il testo è cambiato PRIMA dell'evento. Quindi la domanda è ridondante ora. – Bitterblue

+2

Come ottenere invece il vecchio valore? – Joel

1

Date un'occhiata al textbox events come KeyUp, ecc KeyPress Ad esempio:

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

Forse questi può aiutarvi a raggiungere quello che stai cercando.

0

Anche con il precedente .net fw 2.0 si dovrebbe ancora avere il nuovo e il vecchio valore in eventArgs se non nella proprietà textbox.text stessa poiché l'evento è stato attivato dopo e non durante la modifica del testo.

Se si desidera eseguire operazioni mentre il testo viene modificato, provare l'evento KeyUp piuttosto che quello modificato.

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