2014-12-02 19 views
2
的貨幣格式

我有一位客戶希望將他們的電腦本地化到他們的國家(巴西)。他們希望語言和區域設置都是巴西人。然而,我的應用程序需要以美元工作,並將所有貨幣顯示爲美元。其他一切(語言,日期格式)需要是巴西的。使用不同於windows設置爲

什麼是一個簡單的方法來處理這個問題?我的應用程序已經意識到不同的地區,並在不同的國家工作。這是一個.net 4.0應用程序,所以我想我可以在應用程序啓動時以編程方式更改貨幣格式。這是一個很好的方法來解決這個問題嗎?

+0

你能舉出或展示一個例子嗎?你可以通過下面的代碼來做到這一點,例如 'int MyInt = 100;' 'string MyString = MyInt.ToString(「C」); results ='$ 100.00' [Globalization Step-By-Step](http://msdn.microsoft.com/en-us/goglobal/bb688126.aspx) – MethodMan 2014-12-02 18:56:58

+0

@aircan,如果美國小數點(句號)用於金額,前面加$符號?還是應該使用巴西小數點(逗號),前面加上$符號?換句話說,千分之二十三美分應該顯示爲$ 1,000.23還是$ 1.000,23? – user469104 2014-12-02 19:33:36

回答

3

假設你使用decimal作爲貨幣的類型,你可以使用CultureInfo對象,並在你的ToString()方法把它傳遞。事情是這樣的:

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

如果所有的數據綁定都是通過字符串屬性完成的,那麼這會起作用,允許注入自己的格式。如果數據綁定完成了十進制屬性,WPF完成的'decimal to string'轉換仍將使用機器文化。 – user469104 2014-12-02 19:03:08

+0

這個想法是在需要的地方使用'CultureInfo'。當然,這個例子只有在明確的假設下才有效,在這個特定的情況下 - 我們可以做的最好的是沒有在應用中實現的具體細節。 – Floremin 2014-12-02 19:08:54

2

當你的程序啓動,與NumberFormat從EN-US區域性替換Thread.CurrentThread.CurrentCulture.NumberFormat

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

注意:這會影響所有數字格式,而不僅僅是貨幣格式。如果您願意,您可以複製NumberFormat中的貨幣相關屬性。

+0

最好也設置CurrentUICulture – user469104 2014-12-02 19:21:19

+0

我猜'CurrencySymbol'只能*設置爲'currentCulture.NumberFormat.CurrencySymbol = new CultureInfo(「en-US」)。NumberFormat.CurrencySymbol;'+1 – Habib 2014-12-02 19:22:04

+0

@ user469104:否,如果UI語言需要保持巴西語,則CurrentUICulture不應*更改。 – 2014-12-02 19:23:07

相關問題