【问题标题】:Recursive Loop though all the controls on a form递归循环遍历表单上的所有控件
【发布时间】:2013-01-16 23:23:44
【问题描述】:

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

这就是我所拥有的。

    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));
        }
    }

它不喜欢我尝试从父控件派生子控件的方式。

有人对如何完成我的任务有任何建议吗?

【问题讨论】:

  • 您遇到什么错误?在哪一行?编译器错误还是运行时错误?
  • 为什么不使用 .NET 内置的本地化?如果您创建一个文件ResourceFile.FR-fr.resx,它将在语言环境设置为法国时自动获取它。
  • 在使用控件更改任何内容之前,您可能需要编写代码来检查类型,例如,如果控件是 TextBox,则执行某些操作..

标签: c# .net winforms controls


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多