递归循环遍历表单上的所有控件

时间:2013-01-16 23:23:44

标签: c# .net winforms controls

我正在尝试遍历表单中的所有控件,以允许我的应用程序进行语言本地化。

这就是我所拥有的。

    private void ChangeLanguage(string lang, ControlCollection controls)
    {
        foreach (Control c in controls)
        {
            ChangeLanguage(lang, c.Controls);
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
            resources.ApplyResources(c, c.Name, new CultureInfo(lang));
        }
    }

它不喜欢我如何尝试从父级派生子控件。

有没有人对如何完成任务有任何建议?

1 个答案:

答案 0 :(得分:0)

确认。不要这样做。查看全球化和本地化。 基本上你会用

  • 资源管理器,
  • Thread.CurrentThread.CurrentCulture,
  • Thread.CurrentThread.CurrentUICulture。

在表单呈现时,将控件绑定到ResourceManager或从资源管理器填充值是正确的方法。魔术发生在本地化的ResourceManager .resx中。

http://msdn.microsoft.com/en-us/library/y99d1cd3%28v=vs.80%29.aspx