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

Does Application.EnableVisualStyles() что-то делать?

Я очень придирчив, когда дело доходит до понимания нового языка, и недавно я занялся изучением С#. Поэтому мне нравится знать все, что происходит, когда я создаю новое приложение - в этом случае новое приложение Windows Forms. Я создал один и получил некоторый сгенерированный код из Visual Studio, а одна строка - Application.EnableVisualStyles().

Я провел некоторое исследование MSDN и нашел эту статью: Application.EnableVisualStyles(). Я выполнил пример, который они представили, ожидая, что кнопка не будет видна, когда я прокомментирую указанную строку. Ничего не произошло! Оказалось, что ничего не изменилось. Я знаю, что это очень простой пример, но что-то не изменилось? Если это так критично в процедуре Main(), что именно он делает, что мне не хватает?

4b9b3361

Ответ 1

Да, но вам нужно, чтобы в вашей ОС были установлены определенные настройки, иначе вы не сможете увидеть, что это такое.

Вот несколько скриншотов того же приложения в моей системе:

Application.EnableVisualStyles();

With visual themes

// Application.EnableVisualStyles();

Without visual themes

Если кнопки в других приложениях выглядят как второй скриншот, вы всегда будете видеть кнопки без темы, независимо от того, используете ли вы Application.EnableVisualStyles(), потому что они отключены ОС - способ вернуть их обратно зависит от вашего OS, но обычно включает в себя диалог Производительность Визуальные эффекты.

Ответ 2

Включает более творческие рисунки полос прокрутки и кнопок и т.д. Если false, вы получаете простые элементы управления запасами серого и т.д.

enter image description here

Ответ 3

EnableVisualStyles() не означает, что кнопки теперь визуально отображаются, когда этот метод запущен, это означает, что он будет использовать встроенные теги Windows для управления стилем вместо "классической Windows". Если ваш компьютер работает без стиля, вы не заметите никакой разницы.

Этот ответ может быть вам интересен: Должен ли я вызвать Application.EnableVisualStyles() в службах терминалов?

Ответ 4

Это то, что я получил от Microsoft Support в ответ на непонятный запрос на сбои приложений:

Суть в том, что авария является известной ошибкой в ​​версии 5.0 comctl32.dll(Windows Common Controls), которая поставляется с ОС Windows. Эта ошибка не будет исправлена ​​в версии 5.0 общих элементов управления, поскольку эта версия предназначена для приложений, существующих до Windows XP. С тех пор он был исправлен в версии 6.0 comctl32.dll, который включен в Windows XP и более поздних версиях. Обратите внимание, что обе версии comctl32.dll(5.0 и 6.0) включены в каждую версию Windows с Windows XP. Более старая версия предназначена для обратной совместимости для очень старых приложений.

Чтобы устранить эту проблему, вам необходимо изменить приложение, чтобы оно выбрало версию 6.0 comctl32.dll. В приложении Windows Forms это выполняется путем вызова метода Application.EnableVisualStyles при запуске приложения. Если вы разрабатываете проект С#, вы можете сделать это, добавив вызов до вашего вызова Application.Run в точке входа приложения. Например:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();   //Add this line
        Application.Run(new Form1());
    }

Если вы работаете в проекте Visual Basic.Net, вы можете выбрать это, перейдя к вашим свойствам проекта, а затем установите флажки "Включить платформу приложений" и "Включить XP визуальные стили" на странице свойств приложения.