10

我正在尝试使用与默认 .Net 文化 (SFr.) 不同的符号 (CHF) 格式化货币 (Swiss Frank -- de-CH)。问题是该区域性的 NumberFormat 是只读的。

有没有使用 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 回答