Отрисовка элементов управления с применением визуальных стилей

.NET Framework обеспечивает поддержку для отрисовки элементов управления и других элементов пользовательского интерфейса Windows с использованием стилей оформления в операционных системах, поддерживающих их. В этом разделе описано несколько уровней поддержки в .NET Framework для отрисовки элементов управления и других элементов пользовательского интерфейса с учетом текущего стиля оформления операционной системы.

Классы отрисовки для общих элементов управления

Отрисовкой элемента управления называется рисование пользовательского интерфейса для элемента управления. Пространство имен System.Windows.Forms предоставляет класс ControlPaint для отрисовки некоторых общих элементов управления Windows Forms. Однако этот класс рисует элементы управления в классическом стиле Windows, что может затруднять обеспечение согласованности пользовательского интерфейса при рисовании пользовательских элементов управления в приложениях с включенными стилями оформления.

.NET Framework 2.0 включает классы в пространство имен System.Windows.Forms, которое отрисовывает части и состояния общих элементов управления с применением стилей оформления. Каждый из этих классов содержит методы static для рисования элемента управления или его частей в определенном состоянии с использованием текущего стиля оформления операционной системы.

Некоторые из этих классов предназначены для рисования связанного элемента управления независимо от доступности стилей оформления. Если стили оформления включены, элементы класса будут рисовать связанный элемент управления с применением стилей оформления. Если стили оформления отключены, элементы класса будет рисовать элемент управления в классическом стиле Windows. К таким классам относятся следующие:

Другие классы могут нарисовать связанный элемент управления только при доступных стилях оформления, в противном случае их элементы выдают исключение. К таким классам относятся следующие:

Дополнительные сведения об использовании этих классов для рисования элемента управления см. в разделе How to: Use a Control Rendering Class.

Элемент стиля оформления и классы отрисовки

Пространство имен System.Windows.Forms.VisualStyles содержит классы, которые можно использовать для рисования любого элемента управления или элемента пользовательского интерфейса, поддерживаемого стилями оформления, и получения сведений о нем. К поддерживаемым элементам управления относятся общие элементы управления с классом отрисовки в пространстве имен System.Windows.Forms (см. предыдущий раздел), а также другие элементы управления, такие как элементы управления "Вкладка" и элементы управления "Главная панель". В число других поддерживаемых элементов пользовательского интерфейса входят части меню Пуск , панели инструментов и неклиентской области окон.

Главными классами пространства имен System.Windows.Forms.VisualStyles являются VisualStyleElement и VisualStyleRenderer. VisualStyleElement — это класс платформы для идентификации любого элемента управления или элемента пользовательского интерфейса, поддерживаемого стилями оформления. В дополнение к самому VisualStyleElement пространство имен System.Windows.Forms.VisualStyles содержит много вложенных классов VisualStyleElement со свойствами static , которые возвращают VisualStyleElement для каждого состояния элемента управления, части элемента управления или другого элемента пользовательского интерфейса, поддерживаемого стилями оформления.

VisualStyleRenderer предоставляет методы для рисования каждого VisualStyleElement , определяемого текущим стилем оформления операционной системы, и получения сведений о нем. Сведения, которые можно получить об элементе, включают его размер по умолчанию, тип фона и определения цвета. VisualStyleRenderer использует программу-оболочку для функций API стилей оформления (UxTheme) из части оболочки Windows пакета SDK платформы Windows. Дополнительные сведения см. в статье Включение стилей оформления.

Дополнительные сведения об использовании VisualStyleRenderer и VisualStyleElementсм. в разделе How to: Render a Visual Style Element.

Включение визуальных стилей

Чтобы включить стили оформления для приложения, написанного для .NET Framework версии 1.0, программистам следует включить манифест приложения, указывающий, что для рисования элементов управления будет использоваться ComCtl32.dll версии 6 или более поздней. Приложения, созданные на базе .NET Framework версии 1.1 или более поздней, могут использовать метод Application.EnableVisualStyles класса Application.

Проверка поддержки стилей оформления

Свойство RenderWithVisualStyles класса Application указывает, будет ли текущее приложение рисовать элементы управления с помощью стилей оформления. При рисовании пользовательского элемента управления можно проверить значение RenderWithVisualStyles , чтобы определить, следует ли учитывать стили оформления при отрисовке элемента управления. В следующей таблице перечислены четыре условия, которые должны выполняться, чтобы RenderWithVisualStyles возвратил true.

Condition Примечания.
Операционная система поддерживает стили оформления. Чтобы проверить это условие отдельно, используйте свойство IsSupportedByOS класса VisualStyleInformation .
Пользователь включил стили оформления в операционной системе. Чтобы проверить это условие отдельно, используйте свойство IsEnabledByUser класса VisualStyleInformation .
Стили оформления включены в приложении. Стили оформления можно включить в приложении, вызвав метод Application.EnableVisualStyles или воспользовавшись манифестом приложения, указывающим, что для рисования элементов управления будет применяться ComCtl32.dll версии 6 или более поздней.
Стили оформления используются для рисования клиентской области окон приложений. Чтобы проверить это условие отдельно, используйте свойство VisualStyleState класса Application и убедитесь, что оно имеет значение VisualStyleState.ClientAreaEnabled или VisualStyleState.ClientAndNonClientAreasEnabled.

Чтобы определить, когда пользователь включает или отключает стили оформления или переключается между ними, проверьте наличие значения UserPreferenceCategory.VisualStyle в обработчиках для событий SystemEvents.UserPreferenceChanging или SystemEvents.UserPreferenceChanged .

Важно!

Если вы хотите использовать VisualStyleRenderer для отрисовки элемента управления или элемента пользовательского интерфейса, когда пользователь включает стили оформления или переключается между ними, это нужно сделать при обработке события UserPreferenceChanged вместо UserPreferenceChanging . Если вы используете класс VisualStyleRenderer при обработке UserPreferenceChanging, возникнет исключение.

См. также