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!

War es hilfreich?

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));
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top