15

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

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

我应该怎么做才能执行此任务?

4

2 回答 2

29

MDI 控件的实际背景颜色基于 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' 关键字意味着如果强制转换无效,则设置的变量将为空。因此我们检查'client'是否为空。如果是,则循环中的当前控件不是 MdiClient 控件。只要变量'client'不为空,那么我们掌握的控件就是MdiClient,我们可以设置它的背景颜色。

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

  4. 由于只有 1 个 MdiClient,因此没有必要继续循环,因为这只是浪费处理时间。因此我们调用'break'来退出循环。

如果您需要其他解释,请告诉我。

于 2009-07-06T14:09:37.660 回答
18

将其写入 MDI 表单的加载方法中。

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