如何在一个表格上同时为两个不同的控件设置两种不同的文化?

时间:2017-01-02 06:16:12

标签: c# winforms localization globalization culture

我需要演示如何使用附属程序集本地化控件。在这样做时,我坚持使用一个地方,我在表格上有两个控件都是相同的。我曾经从Label中派生出来。 现在,我需要在文化control1中显示fr-FR文化control2de-DE

是否有任何选项可用于为表单中显示的相同控件设置不同的文化。

以下屏幕截图将显示我的需求。

enter image description here

请建议我是否可能。如果可能,请告诉我如何实现这一目标。

3 个答案:

答案 0 :(得分:1)

尝试使用以下代码。

if(langCode=="fr-FR")
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
}
if(langCode=="de-DE")
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de-DE");
}

答案 1 :(得分:1)

因为您想为应用程序演示本地化功能,所以在更新控件的值时可以更改当前的线程文化

private void SetLocalizedTextForLabel(Label label, string language)
{
    var original = Thread.CurrentThread.CurrentUICulture;
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);

    // Here value will be retrieved from YourResource based on the current culture
    label.Text = Properties.YourResource.YourText;

    Thread.CurrentThread.CurrentUICulture = original;
}

然后使用它

SetLocalizedTextForLabel(frenchLabel, "fr-FR");
SetLocalizedTextForLabel(germanLabel, "de-DE");

答案 2 :(得分:1)

您可以依赖Windows窗体的localization功能。这样,您可以针对不同的文化设置具有不同属性的控件。然后,您可以显示具有为特定文化设置的属性的整个表单。

您还可以选择使用不同的文化显示每个控件。为此,它足以在您的System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("fr-FR"); var resources = new System.ComponentModel.ComponentResourceManager(this.GetType()); resources.ApplyResources(button1, button1.Name); 事件处理程序中使用此类代码:

button2

只是de-DE使用带有Text文化的上述代码。

注意

  1. 以上解决方案不仅限于Localizable属性,它支持所有{{1}}属性。

  2. 您可以简单地将其作为控件类的扩展方法。

  3. 它具有设计师支持,可以创建控件的本地化外观。