2009-07-06 16 views
11

C#でMDIフォームの背景色を変更するにはどうすればよいですか?MDIフォームの背景を変更する

背景色プロパティを使用して変更しましたが、色は変更されません。

このタスクを実行するにはどうすればよいですか?

答えて

24

MDIコントロールの実際のBackGround色は、Windowsの現在のテーマの色に基づいています。 MdiClientコントロールの背景をWinForm内に物理的に設定する必要があります。

// #1 
    foreach (Control control in this.Controls) 
    { 
     // #2 
     MdiClient client = control as MdiClient; 
     if (!(client == null)) 
     { 
      // #3 
      client.BackColor = GetYourColour(); 
      // 4# 
      break; 
     } 
    } 

編集 - コメントを追加しました:

  1. 私たちは、あなたがMdiParentするフォームを設定する際に追加されますMDICLIENTコントロールを見つけるために、MdiParentフォーム内のコントロールをループする必要があります。 Foreachは、コレクションを介した単なる単純な繰り返しです。

  2. フォーム内でMdiClientコントロールを見つける必要があります。これを行うには、 'as'キーワードを使用して現在のコントロールをループ内にキャストします。 'as'キーワードを使用すると、キャストが無効な場合、設定されている変数はnullになります。したがって、 'client'がnullであるかどうかを確認します。そうである場合、ループ内の現在のコントロールはMdiClientコントロールではありません。変数 'c​​lient'がnullでないとすぐに、私たちが保持しているコントロールはMdiClientで、背景色を設定できます。

  3. バックカラーを任意の値に設定します。 ColorWhite、Color.Blue、Colour.FromArgb(など)などの任意の色で「GetYourColour()」を置き換えてください。

  4. 1つのMdiClientしかないので、ループを続けるポイントはありませんそれは処理時間の無駄だからです。したがって、ループを終了するには 'break'と呼びます。

他に何か説明したい場合はお知らせください。

+0

ご返信ありがとうございます。コーディングの助けを借りて、MDIフォームの背景色を変更できるようになりました。 私が必要とするもう1つのヘルプ。できるだけC#に新しいので、コーディングを説明してください。 ありがとうございました! – sheetal

+2

確かに、私はコードにいくつかのコメントを追加します – GenericTypeTea

+1

ありがとうございます! 非常にいい説明です! おかげでたくさん – sheetal

0

MDIフォームのロード方法でこれを記述します。

Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple; 
関連する問題