2009-07-06 60 views
11

如何更改C#中MDI FORM的BACKGROUND颜色?更改MDI表单的背景

我使用背景颜色属性对其进行了更改,但颜色未更改。

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

回答

24

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形式的控制环路发现,当你设置的形式是的MdiParent是被添加了MDICLIENT控制。 Foreach只是一个集合类型的简单迭代。

  2. 我们需要在表单中找到MdiClient控件,为此,我们使用'as'关键字在循环内投射当前控件。使用'as'关键字表示如果强制转换无效,则被设置的变量将为空。因此我们检查'客户'是否为空。如果是,则循环中的当前控件不是MdiClient控件。只要变量'client'不为null,那么我们掌握的控件就是MdiClient,我们可以设置它的背景颜色。

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

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

让我知道你是否想要别的解释。

+0

感谢您的回复。借助您的编码,我现在可以更改MDI表单的背景颜色。 我需要一个更多的帮助。由于我是C#的新手,如果可能的话,你能解释一下编码吗? 非常感谢! – sheetal 2009-07-07 03:53:52

0

用您的MDI表单的加载方式将其写入。

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