C# 使用不同于windows设置的货币格式

C# 使用不同于windows设置的货币格式,c#,.net,C#,.net,我有一位客户希望将他们的计算机本地化到他们的国家(巴西)。他们希望语言和地区设置都是巴西的。但是,我的应用程序需要使用美元,并将所有货币显示为美元。其他所有内容(语言、日期格式)都必须是巴西文 处理这个问题的简单方法是什么?我的应用程序已经知道不同的地区,并在不同的国家工作。这是一个.NET4.0应用程序,所以我想我可以在应用程序启动时通过编程更改货币格式。这是一个很好的方法吗?假设您使用decimal作为货币的类型,您可以使用CultureInfo对象并在ToString()方法中传递它。大概

我有一位客户希望将他们的计算机本地化到他们的国家(巴西)。他们希望语言和地区设置都是巴西的。但是,我的应用程序需要使用美元,并将所有货币显示为美元。其他所有内容(语言、日期格式)都必须是巴西文


处理这个问题的简单方法是什么?我的应用程序已经知道不同的地区,并在不同的国家工作。这是一个.NET4.0应用程序,所以我想我可以在应用程序启动时通过编程更改货币格式。这是一个很好的方法吗?

假设您使用
decimal
作为货币的类型,您可以使用
CultureInfo
对象并在
ToString()方法中传递它。大概是这样的:

decimal amount = 9.95m;
string amountString = amount.ToString("C", new CultureInfo("en-US"));

程序启动时,将
Thread.CurrentThread.CurrentCulture.NumberFormat
替换为en-US区域性中的
NumberFormat

// On startup:
CultureInfo currentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
currentCulture.NumberFormat = new CultureInfo("en-US").NumberFormat;
Thread.CurrentThread.CurrentCulture = currentCulture;

注意:这将影响所有数字格式,而不仅仅是货币格式。如果您愿意,您可以只复制
NumberFormat

中与货币相关的属性。您可以给出或显示您所拥有的内容的示例吗?您可以通过代码执行以下操作,例如
int MyInt=100
string MyString=MyInt.ToString(“C”)结果=
$100.00
@aircan,金额是否应使用美国小数点符号(句点),数字前应加$符号?还是应该使用巴西小数点(逗号),数字前加$符号?换句话说,一千美元二十三美分应该显示为$1000.23还是$1.000,23?如果所有数据绑定都是对字符串属性进行的,允许插入您自己的格式,那么这就行了。如果对十进制属性进行数据绑定,WPF完成的“十进制到字符串”转换仍将使用机器区域性。其思想是在需要时使用
CultureInfo
。当然,该示例仅在所述假设下有效,并且在这种特定情况下,我们最好不要在应用程序中使用具体的实现。我猜
CurrencySymbol
只能设置为
currentCulture.NumberFormat.CurrencySymbol=new CultureInfo(“en-US”).NumberFormat.CurrencySymbol+1@user469104:否,如果用户界面语言需要保留为巴西语,则不应更改当前用户界面文化。