更改MDI表单的背景

时间:2009-07-06 13:59:32

标签: c# visual-studio winforms mdi

如何在C#中更改MDI FORM的BACKGROUND颜色?

我使用背景颜色属性更改了它,但颜色没有改变。

我该怎么做才能完成这项任务?

2 个答案:

答案 0 :(得分:26)

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表单中的控件以查找在将Form设置为MdiParent时添加的MdiClient控件。 Foreach只是通过集合的类型的简单迭代。

  2. 我们需要在表单中找到MdiClient控件,所以为了做到这一点,我们使用'as'关键字在循环中转换当前控件。使用'as'关键字意味着如果强制转换无效,则设置的变量将为null。因此,我们检查'client'是否为null。如果是,则循环中的当前控件不是MdiClient控件。一旦变量'client'不为null,那么我们掌握的控件就是MdiClient,我们可以设置它的背景颜色。

  3. 将背景颜色设置为您想要的任何颜色。只需将“GetYourColour()”替换为您想要的任何颜色,即Color.White,Color.Blue,Colour.FromArgb(等)......

  4. 因为只有1个MdiClient,所以没有必要继续循环,因为它只是浪费处理时间。因此我们称'break'退出循环。

  5. 如果您还需要其他任何解释,请告诉我。

答案 1 :(得分:3)

将此内容写入MDI表单的加载方法中。

Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple;