2009-06-04 23 views
8

Tôi đang cố gắng định dạng đơn vị tiền tệ (Swiss Frank - de-CH) bằng ký hiệu (CHF) khác với văn bản mặc định .Net là (SFr.). Vấn đề là NumberFormat cho văn hóa là ReadOnly.Cách đặt CurrencySymbol trên Readonly CultureInfo.NumberFormat?

Có cách nào đơn giản để giải quyết vấn đề này bằng cách sử dụng CultureInfo và NumberFormat không? Có cách nào tôi có thể ghi đè lên các CurrencySymbol?

Ví dụ: Dim newCInfo Như CultureInfo = CultureInfo.GetCultureInfo (2055) newCInfo.NumberFormat.CurrencySymbol = "CHF" MyCurrencyText.Text = x.ToString ("c", newCInfo)

này sẽ báo lỗi về thiết lập NumberFormat.CurrencySymbol vì NumberFormat là ReadOnly.

Cảm ơn!

Trả lời

12

Gọi Clone trên CultureInfo, sẽ tạo phiên bản có thể thay đổi, sau đó đặt ký hiệu tiền tệ.

Bạn có thể cụ thể hơn: tìm nạp NumberFormatInfo và chỉ sao chép điều đó. Đó là một chút thanh lịch, IMO, trừ khi bạn cần phải thay đổi bất cứ điều gì khác trong văn hóa.

Ví dụ trong 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)); 
    } 
} 
+0

đẹp, và chỉ cần đơn giản. Tôi có thể đá chính mình vì đã bỏ lỡ điều này. Cảm ơn! – sugarcrum

Các vấn đề liên quan