.NET Microsoft Reporting在Windows 8.1中始终使用逗号格式化数字
我用.NET开发了一个使用Microsoft Reporting的应用程序。它在Windows XP、Vista、Windows 7和Windows 8上运行了5年,没有任何问题。由于Microsoft发布了Windows 8.1,问题是我报告中的所有数字都将使用逗号格式,而不是用户当前的区域设置 我尝试了很多方法来解决这个问题:.NET Microsoft Reporting在Windows 8.1中始终使用逗号格式化数字,.net,windows-8.1,comma,.net,Windows 8.1,Comma,我用.NET开发了一个使用Microsoft Reporting的应用程序。它在Windows XP、Vista、Windows 7和Windows 8上运行了5年,没有任何问题。由于Microsoft发布了Windows 8.1,问题是我报告中的所有数字都将使用逗号格式,而不是用户当前的区域设置 我尝试了很多方法来解决这个问题: 显式将rdlc报告模板中的Language属性设置为“de CH”-->此区域性使用“.”设置数字格式 在rdlc报告模板-->的表格单元格中使用“String.F
- 显式将rdlc报告模板中的Language属性设置为“de CH”-->此区域性使用“.”设置数字格式
- 在rdlc报告模板-->的表格单元格中使用“String.Format(IFormatProvider,Value)”提供“de-CH”格式提供程序
- 尝试了ReportViewer 10.0(Visual Studio 2010)和11.0(Visual Studio 2012)的不同版本的程序集
- 将windows 8.1系统设置中的格式设置为“Deutsch(Schweiz)”,对应于“de CH”
如上所述:在Windows 8.0下运行时没有任何问题!这就是解决方案:使用Microsoft的Locale Builder 2.0覆盖当前的“de CH”设置
是的,这是Windows 8.1中的一个已知问题:de CH区域设置的
NumberDecimalSeparator
错误
为了避免从Microsoft的Locale Builder向我的所有客户发送自定义数据,我通过明确设置NumberDecimalSeparator
来解决这一问题:
不太优雅,但很管用。检查CultureInfo中的de CH,我看到一个
的CurrencyDecimalSeparator
和一个的NumberDecimalSeparator
的``(空格)。还有不同的组分隔符。也许你需要将其格式化为“Currency”而不是“Number”?
if (Thread.CurrentThread.CurrentCulture.Name == "de-CH")
{
// fix Windows 8.1 de-CH locale
Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
}