使用不同的参数配置CurrentCulture和CurrentUICulture

本文关键字:配置 CurrentCulture CurrentUICulture 参数 | 更新日期: 2023-09-27 17:59:23

我使用的是c#.net3.5,我想将当前区域性设置的小数分隔符从逗号更改为句点,但同时我希望用户可以在numericupdown控制器中使用逗号作为小数分隔符。所以我尝试将我的文化设置更改为以下

CultureInfo newUIculture = new CultureInfo("tr-TR");
newUIculture.NumberFormat.CurrencyDecimalSeparator = ",";
newUIculture.NumberFormat.CurrencyGroupSeparator = ".";
newUIculture.NumberFormat.NumberDecimalSeparator = ",";
newUIculture.NumberFormat.NumberGroupSeparator = ".";
newUIculture.NumberFormat.PercentDecimalSeparator = ",";
newUIculture.NumberFormat.PercentGroupSeparator = ".";
//Application.CurrentUICulture = newUIculture;//this line giving error.
Thread.CurrentThread.CurrentUICulture = newUIculture;//this line doesn't work
CultureInfo newCulture = new CultureInfo("tr-TR");
newCulture.NumberFormat.CurrencyDecimalSeparator = ".";
newCulture.NumberFormat.CurrencyGroupSeparator = "";
newCulture.NumberFormat.NumberDecimalSeparator = ".";
newCulture.NumberFormat.NumberGroupSeparator = "";
newCulture.NumberFormat.PercentDecimalSeparator = ".";
newCulture.NumberFormat.PercentGroupSeparator = "";
Application.CurrentCulture = newCulture;//this one work fine

当前的区域性设置可以正常工作,但当前的UIculture设置不能像我指定的参数那样工作。如何使用我提供的参数配置这两个设置?

使用不同的参数配置CurrentCulture和CurrentUICulture

CurrentUICulture用于选择加载哪些资源文件。CurrentCulture确定区域性相关函数的结果,例如格式化日期和数字。因此,您看到的行为是意料之中的:您应该使用CurrentCulture。

查看System.Windows.Forms.Application.CurrentCulture,它只是Thread.CurrentThread.CurrentCulture的一个薄薄的包装,而没有System.Windows.Forms.Application.CurrentUICulture这回事,这可以解释为什么您的注释行会为您抛出错误。

如果说"不起作用",你的意思是"不要像我希望的那样更改小数分隔符",那么你已经回答了自己的问题:CurrentCulture是控制它的东西,而不是CurrentUICulture。这些拼写不同是有原因的。