2009-06-04 12 views
8

Ich versuche eine Währung (Swiss Frank - de - CH) mit einem Symbol (CHF) zu formatieren, das sich von der Standard - .Net - Kultur unterscheidet (SFr.). Das Problem ist, dass das NumberFormat für die Kultur ReadOnly ist.Wie setze ich CurrencySymbol auf Readonly CultureInfo.NumberFormat?

Gibt es eine einfache Möglichkeit, dieses Problem mit CultureInfo und NumberFormat zu lösen? Gibt es eine Möglichkeit, das CurrencySymbol zu überschreiben?

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

Dieser Fehler wird beim Festlegen des NumberFormat.CurrencySymbols, weil NumberFormat ReadOnly ist.

Danke!

Antwort

12

Rufen Sie Clone auf der CultureInfo, die eine veränderbare Version erstellen wird, dann legen Sie das Währungssymbol fest.

Sie könnten spezifischer sein: Holen Sie die NumberFormatInfo und klonen Sie nur. Es ist etwas eleganter, IMO, es sei denn, Sie müssen etwas anderes in der Kultur ändern.

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)); 
    } 
} 
+0

Schöne und einfach einfach. Ich könnte mich selbst dafür schlagen, dass ich das verpasst habe. Vielen Dank! – sugarcrum

Verwandte Themen