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

标签 c# visual-studio-2010 if-statement localization

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

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

例如:

if (Config.lang == "FR")
{
    //change **Language** property to "French"
}
else
{
    //remain (Default)
}

问题是,无论我看向何处,我都在编码窗口中的任何位置都看不到 Language 属性,所以我想知道是否可以做到这一点。

最佳答案

由于 .Net UI 程序中管理资源的方式,最简单的方法是在创建任何表单之前在程序开始时正确设置线程区域设置。

首先从配置文件中确定您想要的区域性:

CultureInfo culture = ... whatever

然后将主线程的 CurrentUICultureCurrentCulture 设置为该区域设置:

System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture   = culture;

此代码将进入 main() 开头的 program.cs

请注意,如果您启动显示任何 UI(或输出任何本地化数据)的任何其他线程,您还需要在这些线程启动时执行相同的操作。

另请注意,此方法的一个主要限制是您无法在程序运行时更改区域设置并更新 UI 来反射(reflect)它。您必须在程序开始时设置区域设置。

还有其他解决方案可以避免此限制,但它们更加复杂。

关于c# - Visual Studio 2010 - 更改语言属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23264053/

相关文章:

c# - MVC3 锁定成员(member)用户

c# - 如何使用 C# 从 sql server 读取时间戳类型的数据?

c# - 我是否违反了 DI 模式规则

c# - 从项目 2 的项目 1 中的类调用函数

java - 对象与 null 的比较不起作用

c# - 使用C#从Formstack获取提交的数据?

c++ - 以下任何配置是否会影响发布版本的性能

c# - Visual Studio 禁用运行时异常?

java - Hangman 检查单词中是否包含字符串并替换它?

R 循环太长