强制.NET Windows应用程序。显示英文形状的数字

时间:2013-04-17 08:28:45

标签: .net windows vb.net culture

我正在构建一个特定于文化的.NET Windows应用程序,最近我遇到了根据操作系统文化改变的数字形状的问题。例如,如果操作系统文化是英语(美国)并运行应用程序,显示的数字将是英文形状(通常我们曾经使用过),但如果我将Windows文化更改为阿拉伯语 - 沙特阿拉伯,则会显示数字形状各异。

我想强制这个应用程序只显示英文形状的数字,无论文化是什么。

我搜索了互联网并厌倦了许多试图改变应用文化和UICulture而没有任何结果的解决方案。

的问候,

4 个答案:

答案 0 :(得分:1)

您可以指定进行字符串转换时要使用的区域性,例如:

Dim i As Integer = 5
Dim s As String = i.ToString(CultureInfo.InvariantCulture)

答案 1 :(得分:1)

在后面的代码中使用以下代码:

CultureInfo ci = CultureInfo.CreateSpecificCulture(Thread.CurrentThread.CurrentCulture.Name);
        ci.NumberFormat.DigitSubstitution = DigitShapes.None;
        Thread.CurrentThread.CurrentCulture = ci;

答案 2 :(得分:0)

尝试

culture.NumberFormat.DigitSubstitution=System.Globalization.DigitShapes.None;

答案 3 :(得分:0)

直接在注册表中更改 像英文形状一样:

Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", "sNativeDigits", "0123456789")

对于阿拉伯语形状:

Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", "sNativeDigits", "٠١٢٣٤٥٦٧٨٩")
Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", "NumShape", "2")