0

アプリケーションの言語ローカライズを可能にするために、フォーム内のすべてのコントロールをループしようとしています。

これは私が持っているものです。

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

親から子コントロールを派生させようとする方法が好きではありません。

私の仕事を達成する方法について誰かアドバイスがありますか?

4

1 に答える 1

0

Ack. これをしないでください。グローバリゼーションとローカリゼーションを確認してください。基本的には使用します

  • リソースマネージャー、
  • Thread.CurrentThread.CurrentCulture、
  • Thread.CurrentThread.CurrentUICulture.

コントロールを ResourceManager にバインドするか、フォームのレンダリング時にリソース マネージャーから値を入力するのが正しい方法です。ローカライズされた ResourceManager .resx で魔法が起こります。

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

于 2013-01-16T23:29:39.807 に答える