【问题标题】:Facing problem in initialization of components in C#C#中组件初始化面临的问题
【发布时间】:2011-05-10 08:59:56
【问题描述】:

我是一名学生 C# 程序员。我只是在学习本地化和全球化。我刚刚创建了一个按钮来更改当前线程的当前文化(CurrentCulture 和 CurrentUICulture)。但是在运行此程序后,此按钮无法按我的需要工作。我写的按钮点击事件如下:

    private void BtnLocalized_Click(object sender, EventArgs e)
    {
        CultureInfo CI = new CultureInfo("hi-IN");
        if (Thread.CurrentThread.CurrentCulture != CI)
        {
            Thread.CurrentThread.CurrentCulture = CI;
            Thread.CurrentThread.CurrentUICulture = CI;
        }
        else
        {
            CI = new CultureInfo("en-IN");
            Thread.CurrentThread.CurrentCulture = CI;
            Thread.CurrentThread.CurrentUICulture = CI;
        }
    }

我还尝试在 else 块之后调用 InitializeComponent() 方法。但它只是创建另一个按钮组件而不释放当前按钮。

如何重新初始化这个按钮

编辑:
我只想用我当前的本地语言设置更改Text 属性。

【问题讨论】:

  • 这看起来像一个 WinForms 应用程序,但我不确定。你能确认一下吗?
  • 是的,这是一个 WinForms 应用程序。
  • 文化改变后的预期行为是什么,观察到的行为与此有何不同?

标签: c# winforms localization components initialization


【解决方案1】:

表单的标签在表单创建时设置,不会自动更新。

有两种选择:

  1. 简单的选择是关闭并重新打开表单;

  2. 困难的选择是手动更新表单所有控件的标签。如果您查看表单的“Designer.cs”,您可以看到标签是如何设置的。您可以自己复制这种机制。

我会选择选项 1。

【讨论】:

  • 是否有任何其他选项来处理重新初始化组件。
  • 我相信上面的选项是唯一的选项。没有捷径,至少在正常的 .NET 框架使用中没有。然而,可能有一些工具可以帮助你解决这个问题,但我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 2021-10-20
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多