Wie Currency auf Read-only CultureInfo.NumberFormat gesetzt?
-
11-09-2019 - |
Frage
Ich versuche, eine Währung (Schweizer Franken - de-CH) zu formatieren, mit einem Symbol (CHF), das anders ist das, was die Standard-Net Kultur (SFr.). Das Problem ist, dass das Numberformat für die Kultur ist Readonly.
Gibt es eine einfache Möglichkeit, dieses Problem mit Culture und Number zu lösen? Gibt es irgendeine Weise, die ich die Currency außer Kraft setzen kann?
Beispiel:
Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)
Dies wird Fehler auf die Einstellung der NumberFormat.CurrencySymbol
weil NumberFormat
**ReadOnly**
ist.
Danke!
Lösung
Anruf Clone
auf dem CultureInfo
, die eine veränderbare Version erstellen, dann stellen Sie das Währungssymbol.
Sie könnten präziser sein: den NumberFormatInfo
holen und nur das klonen. Es ist etwas eleganter, IMO, wenn Sie etwas anderes in der Kultur ändern müssen.
Beispiel in 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));
}
}