Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2010-更改语言属性_C#_Visual Studio 2010_If Statement_Localization - Fatal编程技术网

C# Visual Studio 2010-更改语言属性

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) } 问题是,无论我在哪里查看,我在编码窗口的任何地方都看不到语言属性,因此

是否可以通过代码更改主窗体的语言属性?如果是,怎么做

详情: 在配置文件中,我设置了lang=“EN”。我想要的是使用本地化设置来更改依赖于此变量的主窗体。我已将Localizable属性设置为True

例如:

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()的开头。不过,非常感谢!对不起,我不能投票支持你的答案-代表太低了。一旦我给这个地方发垃圾邮件,我一定会投票支持它!