2010-09-12 18 views
1

Je suis en train de créer une application à but non lucratif au Guatemala. Tout dans le système est en Quetzales, qui est noté Q (c'est-à-dire Q100.00) est de 100 Quetzales.

Je dois être en mesure de modifier les valeurs monétaires dans n'importe quelle colonne DataGridView, mais j'ai été incapable de trouver un moyen facile de le faire avec le formatage comme vous pouvez avec un signe dollar. Je ne veux pas utiliser les paramètres de la région informatique car certaines personnes utilisent le système, utilisent des ordinateurs des États-Unis.

Vous ne savez pas si c'est important, mais les valeurs proviennent d'une base de données de serveur sql provenant d'un champ de type 'money'.

Répondre

4

Lors du formatage d'une chaîne que vous pouvez spécifier la culture que vous souhaitez utiliser:

decimal cost = 1500m; 
string s = cost.ToString("C", CultureInfo.GetCultureInfo("es-GT")); 

Résultat

 
Q1,500.00 
+0

Excellent! J'imagine que c'est exactement ce dont j'ai besoin pour mettre en forme toutes les données dans les colonnes. Merci! – Ricky

3

Si vous ne voulez pas compter sur les paramètres régionaux, vous pouvez forcer l'application à exécuter en utilisant la culture Guatamala indépendamment des paramètres régionaux.

CultureInfo culture = new CultureInfo("es-GT"); 
decimal amount = 123.43M; 

// Set the culture for the thread 
System.Threading.Thread.CurrentThread.CurrentCulture = culture; 

// Uses the thread culture for formatting 
MessageBox.Show(amount.ToString("c")); 

// Alternatively if you do not want to set the thread culture 
// you can explicitly format using the passed culture 
MessageBox.Show(amount.ToString("c", culture)); 
+1

Awww. Quand je vois des choses comme ça, je pense vraiment que je voudrais passer en C# un jour. (Venant de PHP) Sweet! –