2009-02-06 45 views
10

Tôi gần như có cùng một vấn đề như anh chàng trong luồng này:C# đôi hiển thị dấu phẩy thay vì thời gian

Convert Float that has period instead of comma?

Vì vậy mà tôi

double x = 234.4; 
string y = x.ToString(); 

tôi nhận được y == "234,4";

Thậm chí tệ hơn ... Double.Parse("234.4") ném ngoại lệ.

Tôi đã viết rất nhiều mã trước khi tôi được yêu cầu sử dụng dấu chấm thay vì dấu phẩy, vì vậy tôi muốn có một số cách để thay đổi CultureInfo của tôi ở mức toàn cầu.

Có một số cài đặt trong các dự án mà tôi có thể thực hiện không?

Tôi đã thử:

 Application.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 

Họ loại công việc. Chúng hoạt động cho hầu hết các phần của ứng dụng, nhưng tất cả các điều khiển nằm trong tab TabControl của tôi vẫn muốn sử dụng máy tính của tôi Localized CultureInfo.

Bất kỳ Ý tưởng nào về cách giải quyết vấn đề này?

+0

Thông thường, hãy đặt CultureInfo trên luồng là đủ. Có lẽ bạn đang chạy mã đặt cultureinfo trên một luồng khác so với GUI? –

+0

Huh! Đó thực sự là trường hợp. Cảm ơn! Tôi nghĩ rằng thiết lập Application.CurrentCulture sẽ ảnh hưởng đến tất cả các chủ đề. .... và nó có, nhưng chỉ _if_ tôi đặt nó trước khi tôi tạo biểu mẫu của tôi vì một lý do nào đó. Tôi đã đặt nó bên dưới việc tạo biểu mẫu (nhưng trước khi chạy). Dù sao, trường hợp đã đóng! Cảm ơn bạn lần nữa! – Presidenten

Trả lời

4

Nhờ Florin Sabaus bình luận tôi thấy giải pháp, mà là để đặt

 Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US"); 

trong Main() ngay trước khi tôi tạo ra hình thức của tôi.

Bây giờ tôi sẽ không phải thay đổi tất cả .ToString() và Double.Parse() :-) Yey!

10

Bạn có thể thử sử dụng

double.Parse("...", CultureInfo.InvariantCulture) 

x.ToString(CultureInfo.InvariantCulture) 

trong các bộ phận của chương trình mà bạn đang tích cực bạn cần phải có thời gian thập phân thay vì dấu phẩy hoặc cài đặt khác trong khu vực phụ thuộc thập phân tách .

Hy vọng điều đó sẽ hữu ích.

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