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

时间:2014-04-22 10:47:57

标签: c# currentculture currentuiculture

我正在使用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

当前文化设置工作正常,但currentUIculture设置不能像我分配参数那样工作。如何使用我给出的参数配置两个设置?

2 个答案:

答案 0 :(得分:0)

CurrentUICulture用于选择加载的资源文件。 CurrentCulture确定文化相关函数的结果,例如格式化日期和数字。所以你看到的行为是预期的:你应该使用CurrentCulture。

答案 1 :(得分:0)

System.Windows.Forms.Application.CurrentCulture偷看,它只是Thread.CurrentThread.CurrentCulture的一个薄包装,并且没有System.Windows.Forms.Application.CurrentUICulture这样的东西,这可以解释为什么你的评论 - out line为你抛出错误。

如果"没有工作",你的意思是"不会像我想要的那样改变小数点分隔符,那么你已经有了#34;回答了你自己的问题:CurrentCulture是控制它的东西,而不是CurrentUICulture。这些拼写不同的原因。