Oppure

Loading
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:
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