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?

È stato utile?

Soluzione

personalizzato formattatore .

È 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top