2009-07-06 2 views
11

Как изменить цвет BACKGROUND для MDI FORM в C#?Изменить фон формы MDI

Я изменил его, используя свойство цвета фона, но цвет не изменился.

Что мне делать для выполнения этой задачи?

ответ

24

Фактический цвет BackGround элемента управления MDI основан на цвете в текущей теме Windows. Вы должны физически установить фон управления MdiClient внутри WinForm.

// #1 
    foreach (Control control in this.Controls) 
    { 
     // #2 
     MdiClient client = control as MdiClient; 
     if (!(client == null)) 
     { 
      // #3 
      client.BackColor = GetYourColour(); 
      // 4# 
      break; 
     } 
    } 

Редактировать - Добавлены комментарии:

  1. Нам нужно перебрать контроль в форме MdiParent найти контроль MDICLIENT, который получает добавлен при установке формы быть MdiParent. Foreach - просто простая итерация типа через коллекцию.

  2. Нам нужно найти элемент управления MdiClient в форме, поэтому для этого мы применяем текущий элемент управления в цикле, используя ключевое слово «как». Использование ключевого слова «как» означает, что если приведение недействительно, тогда установленная переменная будет равна нулю. Поэтому мы проверяем, является ли «клиент» нулевым. Если это так, то текущий элемент управления в цикле не является элементом управления MdiClient. Как только переменная «клиент» не равна нулю, тогда мы контролируем MdiClient, и мы можем установить его цвет фона.

  3. Установите обратную краску на все, что хотите. Просто замените «GetYourColour()» любым цветом, то есть Color.White, Color.Blue, Colour.FromArgb (и т. Д.) ...

  4. Поскольку существует только 1 MdiClient, нет смысла продолжать цикл поскольку это просто пустая трата времени обработки. Поэтому мы вызываем «break» для выхода из цикла.

Сообщите мне, если вы хотите что-нибудь объяснить.

+0

Спасибо за ваш ответ. С помощью вашей кодировки я теперь могу изменить цвет фона формы MDI. Еще одна помощь мне нужна. Поскольку я новичок в C#, если возможно, вы можете просто объяснить кодирование, пожалуйста? Большое спасибо! – sheetal

+2

Несомненно, я добавлю некоторые комментарии к коду – GenericTypeTea

+1

Спасибо! Очень хорошее объяснение !! спасибо – sheetal

0

Напишите это в своем методе загрузки формы MDI.

Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple; 
Смежные вопросы