CultureInfo.NumberFormat Hide Comma
-
28-09-2019 - |
Domanda
Sto cercando di creare un NumberFormat che non si utilizzano i gruppi a tutti.
Vorrei tutti i numeri per essere visualizzato con virgole.
Esempio:
- 1999 anziché il 1999
- 2000000 invece di 2.000.000
- ecc ...
Purtroppo, sto usando un controllo 3rd Party che è un NumericEditor e si applica un ambiente CultureInfo su di esso per mostrare le virgole. Così ho bisogno di creare un'istanza CultureInfo
che non fa uso di raggruppamento a tutti.
Ho provato questo:
int[] groupSize = {0};
CultureInfo culture = new CultureInfo("en-US");
culture.NumberFormat.NumberGroupSizes = groupSize;
Anche ...
CultureInfo culture = new CultureInfo("en-US");
culture.NumberFormat.NumberGroupSeparator = String.Empty; // Throws and exception with the 3rd party control
Il più vicino che ho ottenuto è ...
CultureInfo culture = new CultureInfo("en-US");
culture.NumberFormat.NumberGroupSeparator = " ";
Non mi piace questa soluzione a tutti perché, invece di una virgola il suo spazio bianco e sembra decisamente strano.
Tutte le idee?
Soluzione
È possibile assegnare il fornitore di formato personalizzato in questo modo:
CultureInfo.CurrentCulture.NumberFormat = new MyCustomFormatter();
Questo lavoro potrebbe se (gli sviluppatori di terze parti di controllo) non ha implementare qualche "magia".
Altri suggerimenti
Quale controllo 3rd-party stai usando e avete provato riflettente (usando qualcosa come .NET Reflector) per vedere come stanno usando la classe CultureInfo, perché in regolare vecchio codice C #, l'impostazione del NumberFormat.NumberGroupSize = new int [ ] {0}; funziona così come NumberFormat.NumberGroupSeperator = String.Empty ;. Sembra che il controllo 3rd Party potrebbe utilizzare le proprietà CultureInfo in modo non-standard.