Question

Je suis en train de formater une monnaie (suisse Frank - de-CH) avec un symbole (CHF) qui est différent de ce que la valeur par défaut est la culture .Net (SFr.). Le problème est que le NumberFormat pour la culture est en lecture seule.

Y at-il un moyen simple de résoudre ce problème en utilisant CultureInfo et NumberFormat? Est-il possible que je peux remplacer le CurrencySymbol?

Exemple:

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

Cela erreur sur la définition du NumberFormat.CurrencySymbol parce NumberFormat est **ReadOnly**.

Merci!

Était-ce utile?

La solution

Appel Clone sur le CultureInfo, qui va créer une version mutable, puis définissez le symbole monétaire.

Vous pourriez être plus précis: chercher le NumberFormatInfo et clone seulement. Il est un peu plus élégant, l'OMI, à moins que 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));
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top