01/04/23 14:33
Carlo
per mostrare una stringa che rappresenta un numero con separatore delle migliaia e separatore decimale se serve:
numero.ToString("#,##0.##" // se dopo il punto metti gli zeri invece di # verranno mostrate sempre due cifre anche se valgono zero
nel caso del tuo codice dove fai la moltiplicazione:
se la cultura è "it-IT" verrano messi i punti sulle migliaia e le virgole sul separatore decimale.
Nel tuo caso specifico ricordo che i valori venivano presi da un file .xml con i numeri formattati all'americana. Se hai cambiato l'xml e hai formattato i numeri all'italiana sei a posto.
Se nell'xml hai ancora i numeri formattati all'americana per evitare che nel DataGridView ci siano due formattazioni diverse, devi leggere il file .xml con la cultura impostata a "en-US" e mettere i valori convertiti in double o decimal su delle variabili temporanee e poi impostando la cultura "it-IT" scrivere le variabili temporanee nel DataGridView con .ToString("#,##0.00"
messo in pratica:
numero.ToString("#,##0.##" // se dopo il punto metti gli zeri invece di # verranno mostrate sempre due cifre anche se valgono zero
nel caso del tuo codice dove fai la moltiplicazione:
DataGridView.Rows[1].Cells[3].Value = (decimal.Parse(DataGridView.Rows[1].Cells[2].Value.ToString()) * valore).ToString("#,##0.00");
se la cultura è "it-IT" verrano messi i punti sulle migliaia e le virgole sul separatore decimale.
Nel tuo caso specifico ricordo che i valori venivano presi da un file .xml con i numeri formattati all'americana. Se hai cambiato l'xml e hai formattato i numeri all'italiana sei a posto.
Se nell'xml hai ancora i numeri formattati all'americana per evitare che nel DataGridView ci siano due formattazioni diverse, devi leggere il file .xml con la cultura impostata a "en-US" e mettere i valori convertiti in double o decimal su delle variabili temporanee e poi impostando la cultura "it-IT" scrivere le variabili temporanee nel DataGridView con .ToString("#,##0.00"
messo in pratica:
// per allineare tutto a destra ed avere tutto in colonna DataGridView.AlternatingRowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; DataGridView.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // le due culture da cambiare all'occorrenza System.Globalization.CultureInfo usCulture = new System.Globalization.CultureInfo("en-US"); System.Globalization.CultureInfo itCulture = new System.Globalization.CultureInfo("it-IT"); // Cambio temporaneo della cultura, se nell'xml ci sono numeri con il punto decimale System.Threading.Thread.CurrentThread.CurrentCulture = usCulture; decimal n5 = Convert.ToDecimal(nodotextbox5.InnerText); decimal n6 = Convert.ToDecimal(nodotextbox6.InnerText); decimal n7 = Convert.ToDecimal(nodotextbox7.InnerText); decimal n8 = Convert.ToDecimal(nodotextbox8.InnerText); decimal n9 = Convert.ToDecimal(nodotextbox9.InnerText); // ripristino della cultura System.Threading.Thread.CurrentThread.CurrentCulture = itCulture; DataGridView.Rows.Add(1, " ", n5.ToString("#,##0.00")); DataGridView.Rows.Add(2, " ", n6.ToString("#,##0.00")); DataGridView.Rows.Add(3, " ", n7.ToString("#,##0.00")); DataGridView.Rows.Add(4, " ", n8.ToString("#,##0.00")); DataGridView.Rows.Add(5, " ", n9.ToString("#,##0.00"));
Ultima modifica effettuata da Carlo 01/04/23 15:57
in programmazione tutto è permesso