2013-06-01 39 views
1

我们有一个Winform应用程序,它从数据库中获取一些数值。当windows的用户版本是英文时,这工作正常。所以数字格式都是完美的。但是,如果在以葡萄牙语为基础语言(葡萄牙语 - 巴西)的Windows 7中打开相同的应用程序,则数字格式不正确。这是因为美国英语和葡萄牙语数字格式完全不同。.NET Framework 4.0中的语言和区域设置

最近在.NET Framework 4.0中出现了这种变化,因为当它使用2.0 Framework构建时,应用程序运行良好。

实施例,数字“THOUSAND”将显示为1.000,00正被解释为在运行窗口的葡萄牙语版本的系统中的一个。

英语:1,000.00 =千

葡萄牙:1.000,00 =千

有人点我就如何解决这个或什么是迫使应用程序使用的数据库的正确方法的任何资源而不是将它们格式化为本地用户的系统?用户可以使用美国格式显示的数字。

+1

代码片断展示了如何你从数据库中读取数值,并使它们通过将演示文稿将是有益的。 – jfrankcarr

回答

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

这将重置文化,在您的形式开始/程序

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

你可以尝试既是我不知道哪一个是要去工作

使用
+1

第一个选择完美(en-us)选项。感谢Georgi。 – JamesT

0

的格式(delimmeters和空格)显示的数字是他们字符串表示的问题。小数点存储在数据库或内存中,无需定时器(显然),它们只是硬盘上的128位(粗略地说)。当您尝试显示他们时,格式来范围。如果你的号码以正确的数字格式存储在数据库中,那么这应该不成问题。

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

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

reference 1 reference 2