Подтвердить что ты не робот

Изменить фон формы MDI

Как изменить цвет BACKGROUND в MDI FORM в С#?

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

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

4b9b3361

Ответ 1

Фактический цвет 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;
        }
    }

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

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

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

  • Установите обратный цвет на все, что хотите. Просто замените "GetYourColour()" любым желаемым цветом, то есть Color.White, Color.Blue, Colour.FromArgb(и т.д.)...

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

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

Ответ 2

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

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