是否可以通过代码更改主窗体的语言属性?如果是这样,怎么样?
详细说明: 在Config文件中,我设置了一个lang =“EN”。我想要的是使用本地化设置来更改依赖于此变量的主窗体。我已将可本地化属性设置为 True 。
例如:
if (Config.lang == "FR")
{
//change **Language** property to "French"
}
else
{
//remain (Default)
}
问题是我在编码窗口的任何地方都看不到语言属性,无论我在哪里看,所以我想知道是否有可能这样做。
答案 0 :(得分:2)
由于在.Net UI程序中管理资源的方式,最简单的方法是在创建任何表单之前,在程序开头正确设置线程区域设置。
首先从配置文件中确定所需的文化:
CultureInfo culture = ... whatever
然后将主线程的CurrentUICulture
和CurrentCulture
设置为该区域设置:
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
此代码将在program.cs
开始时进入Main()
。
请注意,如果您启动任何其他显示任何UI的线程(或输出任何本地化数据),您还需要在这些线程的开头执行相同的操作。
另请注意,此方法的一个主要限制是您无法在程序运行时更改语言环境并具有UI更新以反映它。您必须在程序开头设置区域设置。
还有其他解决方案可以避免这种限制,但它们更复杂。