我正在构建一个特定于文化的 .NET Windows 应用程序,最近我遇到了一个数字形状的问题,它根据操作系统文化而改变。例如,如果操作系统文化是英语(美国)并运行应用程序,则显示的数字将是英文形状(我们以前通常使用的),但如果我将 windows 文化更改为阿拉伯语-沙特阿拉伯,则将显示数字在不同的形状。
我想强制此应用程序仅以英语形式显示数字,无论文化是什么。
我在互联网上搜索并厌倦了许多尝试更改应用程序文化和 UICulture 的解决方案而没有任何结果。
问候,
您可以在进行字符串转换时指定要使用的文化,例如:
Dim i As Integer = 5
Dim s As String = i.ToString(CultureInfo.InvariantCulture)
在后面的代码中使用下面的代码:
CultureInfo ci = CultureInfo.CreateSpecificCulture(Thread.CurrentThread.CurrentCulture.Name);
ci.NumberFormat.DigitSubstitution = DigitShapes.None;
Thread.CurrentThread.CurrentCulture = ci;
尝试
culture.NumberFormat.DigitSubstitution=System.Globalization.DigitShapes.None;
直接在注册表中更改它。
就像英文形状一样:
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")