15

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

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

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

4

2 に答える 2

29

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

編集-コメントを追加:

  1. フォームをMdiParentに設定したときに追加されるMdiClientコントロールを見つけるには、MdiParentフォームのコントロールをループする必要があります。Foreachは、コレクションを介した型の単純な反復です。

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

  3. バックカラーを好きなように設定します。「GetYourColour()」を任意の色(Color.White、Color.Blue、Colour.FromArgb(etc)など)に置き換えるだけです。

  4. MdiClientは1つしかないため、処理時間の無駄であるため、ループを続行しても意味がありません。したがって、「break」を呼び出してループを終了します。

他に説明が必要な場合はお知らせください。

于 2009-07-06T14:09:37.660 に答える
18

これをMDIフォームのロードメソッドに記述します。

Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple;
于 2017-12-22T15:54:57.323 に答える