2010-10-05 11 views
2

J'essaie de créer un NumberFormat qui n'utilisera pas du tout les groupes.CultureInfo.NumberFormat Masquer la virgule

Je voudrais que tous les nombres soient affichés sans virgule.

Exemple:

  • 1999 au lieu de 1,999
  • 2.000.000 au lieu de 2.000.000
  • etc ...

Malheureusement, je me sers d'un contrôle 3rd Party qui est un NumericEditor et il applique un paramètre CultureInfo pour afficher les virgules. J'ai donc besoin de créer une instance CultureInfo qui n'utilise pas du tout le groupement.

J'ai essayé:

int[] groupSize = {0}; 
CultureInfo culture = new CultureInfo("en-US"); 
culture.NumberFormat.NumberGroupSizes = groupSize; 

aussi ...

CultureInfo culture = new CultureInfo("en-US"); 
culture.NumberFormat.NumberGroupSeparator = String.Empty; // Throws and exception with the 3rd party control 

Le plus proche que j'ai obtenu est ...

CultureInfo culture = new CultureInfo("en-US"); 
culture.NumberFormat.NumberGroupSeparator = " "; 

Je n'aime pas cette solution du tout parce qu'au lieu d'une virgule son espace blanc et il semble vraiment étrange.

Des idées?

+0

La publication de la trace de pile de l'exception était une mauvaise idée. –

+0

@Ben f. pourquoi ne mettez-vous pas votre commentaire dans un formulaire de réponse et je l'accepterai car c'est le bon. – Gabe

Répondre

0

Envisager de mettre en œuvre custom formatter.

Vous pouvez assigner votre fournisseur de format personnalisé comme celui-ci:

CultureInfo.CurrentCulture.NumberFormat = new MyCustomFormatter(); 

Cela pourrait fonctionner si elles (les développeurs de contrôle 3ème partie) ne mettent pas en œuvre une « magie ».

+0

Son scellé maintenant au moins. –

1

Quel contrôle tiers utilisez-vous et avez-vous essayé de refléter (en utilisant quelque chose comme .NET Reflector) pour voir comment ils utilisent la classe CultureInfo, car dans l'ancien code C#, définissez NumberFormat.NumberGroupSize = new int [] {0}; fonctionne aussi bien que NumberFormat.NumberGroupSeperator = String.Empty ;. Il semble que le contrôle tiers puisse utiliser les propriétés CultureInfo d'une manière non standard.