2011-08-25 25 views
6

Voglio le mie caselle di testo che sono vincolate ai campi di entità monetaria (SqlServer), per mostrare solo due posizioni decimali invece di quattro posizioni.C# formattazione decimale della casella di testo

Io uso DevExpress textEdit e CalcEdit scatole con il seguente formato di visualizzazione e modificare: "#,##0.00#;(#,##0.00#)"; ma ottengo sempre quattro cifre decimali (zeri).

Io uso la stessa stringa di formato in Janus Grid, i valori vengono visualizzati correttamente.

Qualsiasi idea, grazie.

+2

non funziona 'N2' per te? – V4Vendetta

risposta

3

Prova #,##0.00 - non è necessario il "#" finale.

4

Utilizzare questa:

per esempio si ha una variabile denominata importo. quindi formattalo in questo modo,

amount.ToString("###,###.00"); 

Ti darà l'importo in due posizioni decimali.

Spero che questo aiuti.

+0

I miei box di testo sono associati a un'entità con campi numerici, dovrei formattare le caselle di testo quando vengono caricati per la prima volta i dati, quindi riformattare ogni volta che un valore della casella di testo è cambiato? – Dohamsg

+0

Puoi anche farlo così. Dillo se funziona o no? – AlphaMale

5

Si consiglia vivamente di utilizzare le stringhe di formato integrate laddove possibile, ad esempio N2.

string s = number.ToString("N2"); 

.NET Format String Quick Reference Cheat Sheet Usa John Sheehan in caso di dubbio. Ha tutte le informazioni necessarie sulla formattazione di numeri e date in .NET.

controlli DevExpress di solito richiedono di specificare anche ciò che si formatta (ad esempio un numero, data, ecc):

calcEdit.Properties.DisplayFormat.FormatType = FormatType.Numeric; 
calcEdit.Properties.DisplayFormat.FormatString = "N2"; 

Se il tipo di formato non è specificato, non verrà applicata la stringa di formato .

Con TextEdit è necessario specificare una maschera.

textEdit.Properties.Mask.MaskType = MaskType.Numeric; 
textEdit.Properties.Mask.EditMask = "N2"; 
+0

Provato questo, ma nessun successo. Grazie – Dohamsg

+0

Impossibile ottenere solo due decimali, utilizzando il designer. Quale urlo di evento che uso per formattare il testo delle caselle di testo. Quando faccio doppio clic su una griglia (le colonne numeriche sono ben formattate), mostro gli stessi dati su un modulo con caselle di testo (che mostrano quattro zeri finali nelle caselle di testo numeriche). – Dohamsg

+0

Prova a specificare una maschera. Vedi la mia risposta aggiornata. Se si utilizza un BindingSource per visualizzare i dati nelle modifiche di testo, specificare la stringa di formato sul bind invece del controllo. – bernhof

0

Di solito scrivo di nuovo il nuovo valore formattato nella casella di testo dopo che è stato convalidato. Quindi se è un decimale per millesimi, allora nel gestore di eventi convalidato scrivo il valore nel testo dopo essere stato analizzato in un float come questo. this.textbox1.Text = speed.ToString ("N3").

Problemi correlati