我在设计时支持中使用了资源文件进行本地化。将为设计器操作项检索本地化字符串,以便在控件的设计器中添加。这是我用来从设计模式中的资源管理器获取当前文化的代码。
if (resourceManager != null)
{
CultureInfo currentUICulture = CultureInfo.CurrentUICulture;
if (resourceManager.GetResourceSet(currentUICulture, true, true) != null)
{
ResourceManager result = resourceManager;
return result;
}
}
我已使用表单级别的以下代码更改了当前的文化。
public Form1()
{
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR");
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR");
CultureInfo.CurrentCulture = new CultureInfo("fr-FR");
CultureInfo.CurrentUICulture = new CultureInfo("fr-FR");
InitializeComponent();
}
我的问题 - 在设计时未检索到法语的更改文化。文化得到的是一直在美国。
有谁知道,如何在运行时改变文化以反映上述问题?
此致 Amal Raj
答案 0 :(得分:1)
考虑以下事实:
CultureInfo.CurrentUICulture
返回当前的线程UI文化。Form1
的构造函数不会在设计时执行。它的InitializeComponent
methis将被反序列化以初始化其基类Form
的一个实例,该实例在VS设计器中显示。由于您当前的线程是Visual Studio UI线程,并且它在您的系统中使用en-US
,因此您将在设计时收到en-US
作为当前UI线程。