Comment mettre CurrencySymbol sur Readonly CultureInfo.NumberFormat?
-
11-09-2019 - |
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!
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));
}
}