C#でMDIフォームの背景色を変更するにはどうすればよいですか?
背景色プロパティを使用して変更しましたが、色は変更されていません。
このタスクを実行するにはどうすればよいですか?
C#でMDIフォームの背景色を変更するにはどうすればよいですか?
背景色プロパティを使用して変更しましたが、色は変更されていません。
このタスクを実行するにはどうすればよいですか?
MDIコントロールの実際のBackGroundの色は、Windowsの現在のテーマの色に基づいています。WinForm内でMdiClientコントロールの背景を物理的に設定する必要があります。
// #1
foreach (Control control in this.Controls)
{
// #2
MdiClient client = control as MdiClient;
if (!(client == null))
{
// #3
client.BackColor = GetYourColour();
// 4#
break;
}
}
編集-コメントを追加:
フォームをMdiParentに設定したときに追加されるMdiClientコントロールを見つけるには、MdiParentフォームのコントロールをループする必要があります。Foreachは、コレクションを介した型の単純な反復です。
フォーム内でMdiClientコントロールを見つける必要があるため、これを行うには、「as」キーワードを使用してループ内で現在のコントロールをキャストします。'as'キーワードを使用することは、キャストが無効な場合、設定される変数がnullになることを意味します。したがって、「client」がnullかどうかを確認します。そうである場合、ループ内の現在のコントロールはMdiClientコントロールではありません。変数'client'がnullでなくなるとすぐに、取得したコントロールはMdiClientであり、その背景色を設定できます。
バックカラーを好きなように設定します。「GetYourColour()」を任意の色(Color.White、Color.Blue、Colour.FromArgb(etc)など)に置き換えるだけです。
MdiClientは1つしかないため、処理時間の無駄であるため、ループを続行しても意味がありません。したがって、「break」を呼び出してループを終了します。
他に説明が必要な場合はお知らせください。
これをMDIフォームのロードメソッドに記述します。
Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple;