2016-06-16 9 views
0

私は、追加、編集、コピー、削除、複数の車両選択というラベルの付いたボタンコントロールをいくつか持っています。メニューバーに言語を変更するオプションがあります(英語、スペイン語、ドイツ語など)。 Windowsフォームで選択した言語に基づいてボタンコントロールラベルを変更する簡単な方法はありますか?言語の変更に関するコントロールラベル

答えて

0

あなたは、アプリケーションの言語を切り替えると、開いているすべてのフォームとそのコントロールにこの変更を適用することによって、それを行うことができます。

private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) 
    { 
     try 
     { 

      if (Thread.CurrentThread.CurrentCulture.Name == "de-DE") 
      { 
       CultureInfo culture = new CultureInfo("en-US"); 
       Thread.CurrentThread.CurrentCulture = culture; 
       Thread.CurrentThread.CurrentUICulture = culture; 
       ChangeLanguage("en-US"); 
      } 

      else 
      { 
       Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); 
       Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE"); 
       ChangeLanguage("de-DE"); 
      } 
     } 
     catch(Exception) 
     { } 
    } 

    private static void ChangeLanguage(string lang) 
    { 
     foreach (Form frm in Application.OpenForms) 
     { 
      localizeForm(frm, lang); 
     } 
    } 

    private static void localizeForm(Form frm, string lang) 
    { 
     var manager = new ComponentResourceManager(frm.GetType()); 
     manager.ApplyResources(frm, "$this"); 
     applyResources(manager, frm.Controls, lang); 
    } 

    private static void applyResources(ComponentResourceManager manager, Control.ControlCollection ctls, string lang) 
    { 
     foreach (Control ctl in ctls) 
     { 
      // here your logic should be accurate enough to apply each control on form 
      // This is just an example and may or may not work, just giving a thought that you can do it in this way 
      manager.ApplyResources(ctl, ctl.Name, new CultureInfo(lang)); 
      applyResources(manager, ctl.Controls, lang); 
     } 
    } 

私は、これはあなたがそれに多くをふけるために役立つことを願っています。 :)

+0

ありがとう、それは助けた – Shivakumar

+0

それはあなたを助けたと聞いてよかった!あなたはこれをあなたの質問に対する答えとすることができますので、他の人にも役立ちます。ハッピーコーディング:) –