C# Visual Studio 2010-更改语言属性
是否可以通过代码更改主窗体的语言属性?如果是,怎么做 详情: 在配置文件中,我设置了lang=“EN”。我想要的是使用本地化设置来更改依赖于此变量的主窗体。我已将Localizable属性设置为True 例如:C# Visual Studio 2010-更改语言属性,c#,visual-studio-2010,if-statement,localization,C#,Visual Studio 2010,If Statement,Localization,是否可以通过代码更改主窗体的语言属性?如果是,怎么做 详情: 在配置文件中,我设置了lang=“EN”。我想要的是使用本地化设置来更改依赖于此变量的主窗体。我已将Localizable属性设置为True 例如: if (Config.lang == "FR") { //change **Language** property to "French" } else { //remain (Default) } 问题是,无论我在哪里查看,我在编码窗口的任何地方都看不到语言属性,因此
if (Config.lang == "FR")
{
//change **Language** property to "French"
}
else
{
//remain (Default)
}
问题是,无论我在哪里查看,我在编码窗口的任何地方都看不到语言属性,因此我想知道是否有可能做到这一点。因为.Net UI程序中管理资源的方式,要做到这一点,最简单的方法是在创建任何表单之前,在程序开始时正确设置线程区域设置 首先从配置文件中确定所需的区域性:
CultureInfo culture = ... whatever
然后将主线程的CurrentUICulture
和CurrentCulture
设置为该区域设置:
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
此代码将在Main()
的开头进入program.cs
请注意,如果启动显示任何UI(或输出任何本地化数据)的任何其他线程,则还需要在这些线程的开始处执行相同的操作
还要注意,这种方法的一个主要限制是,在程序运行时不能更改区域设置,也不能让UI更新来反映它。您必须在程序开始时设置区域设置
还有其他一些解决方案可以避免这一限制,但它们要复杂得多。谢谢,效果很好!虽然我不需要把它放在“program.cs”中,但我只是把它放在MainForm()的开头。不过,非常感谢!对不起,我不能投票支持你的答案-代表太低了。一旦我给这个地方发垃圾邮件,我一定会投票支持它!