2009-07-06 57 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;