问题 为整个应用程序设置CurrentCulture的简便方法?


在.net 2 winforms应用程序中,为整个应用程序设置文化的好方法是什么?
为每个新线程设置CurrentThread.CurrentCulture是重复且容易出错的。
理想情况下,我想在应用程序启动时设置它并忘记它。


7419
2017-09-18 14:40


起源

这可能是旧闻,但可以在.NET 4.5中做你想做的事情(看到链接)。您可能需要设置两者 DefaultThreadCurrentUICulture 和 DefaultThreadCurrentCulture - nooblar
我知道这个话题很老,但所有新人都可以看到: stackoverflow.com/questions/28426349/... - Tariktiri


答案:


.NET中线程的文化是系统的文化(由单个应用程序/进程查看)。无法在.NET中覆盖它,您必须继续为每个新线程设置CurrentCulture。


12
2017-09-18 15:08



>严格来讲系统的文化,文化对应当前用户的区域设置。 - Joe


您可以这样设置应用程序当前文化:

static void Main()
{
    System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("fi-FI");
    Application.CurrentCulture = cultureInfo;
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

我不确定它是否有帮助,因为我从来没有用线程测试它。

编辑:它不起作用。我认为你必须在每个线程中设置当前的文化。


1
2017-09-18 15:33



我尝试了你的解决方案,没有任何区别。 - Douglas Tosi
Application.CurrentCulture 代表来 Thread.CurrentThread.CurrentCulture 所以它只为应用程序的主线程设置它。 - adrianbanks