2009-06-04 3 views
8

デフォルトの.Netカルチャとは異なるシンボル(CHF)で通貨(Swiss Frank-de-CH)をフォーマットしようとしています(SFr。)。問題は、カルチャのNumberFormatがReadOnlyであることです。Readonly CultureInfo.NumberFormatでCurrencySymbolを設定するには?

CultureInfoとNumberFormatを使用してこの問題を解決する簡単な方法はありますか? CurrencySymbolをオーバーライドできる方法はありますか?

例のCultureInfo = CultureInfo.GetCultureInfo(2055) newCInfo.NumberFormat.CurrencySymbol = "CHF" MyCurrencyText.Text = x.ToString( "C"、newCInfo)

として薄暗いnewCInfoこれがエラーであろうNumberFormatはReadOnlyであるため、NumberFormat.CurrencySymbolを設定してください。

ありがとうございます!

答えて

12

CultureInfoCloneを呼び出すと、変更可能なバージョンが作成され、通貨記号が設定されます。

より具体的には、NumberFormatInfoを取得し、それを複製するだけです。あなたが文化の中で何かを変える必要がない限り、それはややエレガントなIMOです。 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

美しい、単に単純。私はこれを逃して自分自身を蹴ることができる。ありがとう! – sugarcrum

関連する問題