2013-04-01 8 views
8

Ho un programma C# che deve accettare un input di quantità se viene selezionata una casella di controllo. Quindi moltiplica la quantità per il prezzo e aggiorna l'etichetta appropriata con il costo totale.Perché il mio valore di testo dell'etichetta C# non viene aggiornato?

Tuttavia, quando eseguo il programma non aggiorna l'etichetta. Ho eseguito il debugger e il valore di .text dell'etichetta nel sistema è corretto ma non appare ancora nella forma attuale.

Esiste una proprietà etichetta in Visual Studio che impedisce il rendering delle modifiche?

Ecco il frammento di responsabile per l'aggiornamento del valore di Label.text

if (chkSesame.Checked) 
    { 
     intSesameQty = Convert.ToInt32(txtSesameQty.Text); 
     decSesameTotal = intSesameQty * decBAGEL_PRICE; 
     lblSesameSeedTotal.Text = decSesameTotal.ToString("c"); 
    } 
+0

Assicurati di non reimpostare il valore di 'lblSesameSeedTotal.Text' più avanti nel tuo codice, anche che tipo di applicazione stai mirando a winfomr, wpf? web ? – Habib

+0

@Habib winform, e non riesco a trovare alcun codice che sovrascriva il testo :( – jrounsav

+2

Oltre all'utile consiglio di @ Habib, chiama 'lblSesameSeedTotal.Refresh()' dopo aver impostato il valore del testo help? – dash

risposta

12

Senza sapere di più sulla struttura del modulo, e in che modo si sta chiamando il codice, è difficile dare qualsiasi altro consiglio altro che tentare di chiamare lblSesameSeedTotal.Refresh() dopo aver impostato il testo.

La chiamata di aggiornamento (collegamento MSDN Control.Refresh) invalida efficacemente il controllo e forza il runtime a ridisegnare il controllo, che, naturalmente, include l'aggiornamento del suo testo.

Ci sono molti motivi per cui potrebbe essere necessario farlo; il ridisegno è un'operazione costosa, quindi, in generale, se si sta gestendo un evento altrove nel modulo, potrebbe non aggiornare determinati controlli. Ciò è particolarmente vero per le etichette e controlli simili i cui valori tendono a rimanere costanti (ad esempio un'etichetta per una casella di testo con il testo: Immettere il nome qui non ha realmente bisogno di cambiare).

Problemi correlati