我正在构建一个特定于文化的.NET Windows应用程序,最近我遇到了根据操作系统文化改变的数字形状的问题。例如,如果操作系统文化是英语(美国)并运行应用程序,显示的数字将是英文形状(通常我们曾经使用过),但如果我将Windows文化更改为阿拉伯语 - 沙特阿拉伯,则会显示数字形状各异。
我想强制这个应用程序只显示英文形状的数字,无论文化是什么。
我搜索了互联网并厌倦了许多试图改变应用文化和UICulture而没有任何结果的解决方案。
的问候,
答案 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")