2009-06-04 7 views
8

J'essaye de formater une devise (Swiss Frank - de - CH) avec un symbole (CHF) différent de ce qu'est la culture .Net par défaut (SFr.). Le problème est que le NumberFormat pour la culture est ReadOnly.Comment régler CurrencySymbol sur Readonly CultureInfo.NumberFormat?

Existe-t-il un moyen simple de résoudre ce problème en utilisant CultureInfo et NumberFormat? Est-il possible de remplacer le CurrencySymbol?

Exemple: Dim newCInfo Comme CultureInfo = CultureInfo.GetCultureInfo (2055) newCInfo.NumberFormat.CurrencySymbol = "CHF" MyCurrencyText.Text = x.ToString ("c", newCInfo)

Cela erreur lors de la définition de NumberFormat.CurrencySymbol car NumberFormat est ReadOnly.

Merci!

Répondre

12

Appelez Clone sur le CultureInfo, ce qui créera une version modifiable, puis définissez le symbole monétaire.

Vous pourriez être plus précis: aller chercher le NumberFormatInfo et le cloner seulement. C'est un peu plus élégant, IMO, sauf si vous avez besoin de changer quoi que ce soit d'autre dans la culture.

Exemple en C#:

using System; 

using System.Globalization; 

class Test 
{ 
    static void Main() 
    { 
     CultureInfo original = CultureInfo.GetCultureInfo(2055); 
     NumberFormatInfo mutableNfi = (NumberFormatInfo) original.NumberFormat.Clone(); 
     mutableNfi.CurrencySymbol = "X"; 
     Console.WriteLine(50.ToString("C", mutableNfi)); 
    } 
} 
+0

Belle et simplement simple. Je pourrais me battre pour avoir manqué ça. Merci! – sugarcrum

Questions connexes