是否可以通过代码更改主窗体的语言属性?如果是这样,怎么办?
详细信息: 在配置文件中我设置了 lang="EN"。我想要的是使用本地化设置来更改依赖于此变量的主窗体。我已将 可本地化 属性设置为 True。
例如:
if (Config.lang == "FR")
{
//change **Language** property to "French"
}
else
{
//remain (Default)
}
问题是,无论我看向何处,我都在编码窗口中的任何位置都看不到 Language 属性,所以我想知道是否可以做到这一点。
最佳答案
由于 .Net UI 程序中管理资源的方式,最简单的方法是在创建任何表单之前在程序开始时正确设置线程区域设置。
首先从配置文件中确定您想要的区域性:
CultureInfo culture = ... whatever
然后将主线程的 CurrentUICulture
和 CurrentCulture
设置为该区域设置:
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/