. net Framework 4.0中的语言和区域设置

本文关键字:语言 区域 设置 Framework net | 更新日期: 2023-09-27 18:16:36

我们有一个Winform应用程序,它从数据库中获取一些数值。当windows的用户版本是英语时,这可以正常工作。所以数字格式都是完美的。然而,当同样的应用程序在Windows 7中以葡萄牙语作为基本语言(葡萄牙-巴西)打开时,数字格式都是错误的。这是因为美国英语和葡萄牙语的数字格式完全不同。

这个变化似乎是最近在。net Framework 4.0中发生的,因为应用程序在使用2.0 Framework构建时运行得很好。

例如,数字"THOUSAND"将显示为1.000,00,在运行葡萄牙语版本的windows的系统中被解释为1。

中文:10000.00 =千

葡萄牙语:1.000,00 =千

有人能告诉我如何解决这个问题,或者强迫应用程序使用数据库值而不是将它们格式化到本地用户的系统的正确方法是什么?用户可以接受以美国格式显示的数字。

. net Framework 4.0中的语言和区域设置

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

这将重置区域性,在窗体/程序的开始处使用它

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

你可以两个都试试因为我不确定哪一个会起作用

显示数字的格式(分隔符和空格)是它们的字符串表示形式的问题。小数存储在数据库或内存中,没有分隔符(显然),它们在硬盘上只有128位(粗略地说)。当您尝试显示它们时,格式就会出现。如果您的号码以正确的数字格式存储在DB中,那么这应该不是问题。

如果在某处尝试将字符串转换为数字,可能会出现问题。例如,如果你存储值在db作为字符串(我希望你不要)。在这种情况下,每次将数字转换为字符串时都应该指定格式提供程序,反之亦然。例如:

decimal.Parse(numberAsString, CultureInfo.InvariantCulture); // 1
decimalNumber.ToString(CultureInfo.InvariantCulture); // 2

引用1参考2