10

デフォルトの .Net カルチャ (SFr.) とは異なる記号 (CHF) で通貨 (スイス フランク -- de-CH) をフォーマットしようとしています。問題は、カルチャの NumberFormat が ReadOnly であることです。

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

例:

Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)

これは を設定するとエラーになります。NumberFormat.CurrencySymbolなぜならNumberFormatis**ReadOnly**です。

ありがとう!

4

1 に答える 1

15

を呼び出しCloneCultureInfo、変更可能なバージョンを作成し、通貨記号を設定します。

より具体的に言えば、 を取得して、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));
    }
}
于 2009-06-04T16:40:53.863 に答える