Application.EnableVisualStyles () делает что-нибудь? - PullRequest
39 голосов
/ 20 июля 2011

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

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

Ответы [ 4 ]

38 голосов
/ 20 июля 2011

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

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

Application.EnableVisualStyles();

With visual themes

// Application.EnableVisualStyles();

Without visual themes

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

13 голосов
/ 20 июля 2011

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

enter image description here

9 голосов
/ 20 июля 2011

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

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

3 голосов
/ 04 октября 2013

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

Суть в том, что сбой - это известная ошибка в версии 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 при запуске приложения.Если вы разрабатываете в рамках проекта C #, вы можете сделать это, добавив вызов до вызова Application.Run в точке входа вашего приложения.Например:

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

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

...