我正在尝试使用与默认.Net文化(SFr。)不同的符号(CHF)来格式化货币(Swiss Frank - 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
时会出错,因为NumberFormat
为**ReadOnly**
。
谢谢!
答案 0 :(得分:13)
在Clone
上调用CultureInfo
,这将创建一个可变版本,然后设置货币符号。
您可能更具体:获取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));
}
}