2009-07-06 2 views
11

C#에서 MDI 서식의 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'키워드를 사용한다는 것은 캐스트가 유효하지 않으면 설정된 변수가 널 (NULL)이됨을 의미합니다. 따라서 '클라이언트'가 null인지 확인합니다. 이 경우 루프의 현재 컨트롤이 MdiClient 컨트롤이 아닙니다. 변수 'client'가 null이 아니라면 우리가 보유하고있는 컨트롤은 MdiClient이며 배경색을 설정할 수 있습니다.

  3. 원하는 색으로 백 색을 설정하십시오. 그냥 Color.White, Color.Blue, Colour.FromArgb (등) ...

  4. 과 같이 원하는 색상으로 "GetYourColour()"를 대체하십시오. MdiClient가 하나만 있으므로 루프를 계속 진행할 필요가 없습니다 처리 시간 낭비 일뿐입니다. 따라서 우리는 'break'를 호출하여 루프를 종료합니다.

다른 설명이 필요하면 알려주세요.

+0

답장을 보내 주셔서 감사합니다. 코딩의 도움으로 이제 MDI 형식의 배경색을 변경할 수있게되었습니다. 내가 필요로하는 한 가지 더 도움이된다. 가능한 한 C#을 처음 접했기 때문에 가능한 한 코딩을 설명 할 수 있을까? 감사합니다. – sheetal

+2

예, 코드에 몇 가지 설명을 추가하겠습니다. – GenericTypeTea

+1

대단히 감사합니다 !! 아주 좋은 설명 !! 덕분에 많은 – sheetal

0

MDI 형식의로드 방법에이 내용을 씁니다.

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