Поделиться через


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

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

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

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

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

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

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

Дополнительные сведения об использовании этих классов для рисования элемента управления см. в разделе Практическое руководство: Использование класса отрисовки элементов управления.

Элементы визуального стиля и классы отрисовки

Пространство имен 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.

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

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

Важный

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

См. также