Фон изменения формы MDI

Я знаю, что это старая ветка, но я нашел кое-что интересное на официальном сайте python. Просто для того, чтобы поделиться другой идеей удаления всего содержимого в каталоге. Потому что у меня есть некоторые проблемы с авторизацией при использовании shutil.rmtree (), и я не хочу удалять каталог и создавать его заново. Оригинал адреса: http://docs.python.org/2/library/os.html#os.walk . Надеюсь, что это может кому-то помочь.

def emptydir(top):
    if(top == '/' or top == "\\"): return
    else:
        for root, dirs, files in os.walk(top, topdown=False):
            for name in files:
                os.remove(os.path.join(root, name))
            for name in dirs:
                os.rmdir(os.path.join(root, name))

11
задан Neolisk 4 May 2013 в 16:49
поделиться

1 ответ

Фактический цвет фона элемента управления 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;
        }
    }

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

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

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

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

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

26
ответ дан 3 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: