Renderowanie formantów przy użyciu stylów wizualnych

Program .NET Framework zapewnia obsługę kontrolek renderowania i innych elementów interfejsu użytkownika systemu Windows przy użyciu stylów wizualnych w systemach operacyjnych, które je obsługują. W tym temacie omówiono kilka poziomów obsługi w programie .NET Framework na potrzeby renderowania kontrolek i innych elementów interfejsu użytkownika z bieżącym stylem wizualnym systemu operacyjnego.

Klasy renderowania dla typowych kontrolek

Renderowanie kontrolki odwołuje się do rysowania interfejsu użytkownika kontrolki. System.Windows.Forms Przestrzeń nazw udostępnia klasę do renderowania ControlPaint niektórych typowych kontrolek Windows Forms. Jednak ta klasa rysuje kontrolki w klasycznym stylu systemu Windows, co może utrudnić zachowanie spójnego środowiska interfejsu użytkownika podczas rysowania kontrolek niestandardowych w aplikacjach z włączonymi stylami wizualnymi.

Program .NET Framework 2.0 zawiera klasy w System.Windows.Forms przestrzeni nazw, które renderuje części i stany wspólnych kontrolek ze stylami wizualizacji. Każda z tych klas zawiera static metody rysowania kontrolki lub części kontrolki w określonym stanie z bieżącym stylem wizualnym systemu operacyjnego.

Niektóre z tych klas zostały zaprojektowane tak, aby narysować powiązaną kontrolkę niezależnie od tego, czy są dostępne style wizualizacji. Jeśli style wizualizacji są włączone, członkowie klasy będą rysować powiązaną kontrolkę ze stylami wizualizacji; Jeśli style wizualizacji są wyłączone, członkowie klasy narysują kontrolkę w klasycznym stylu systemu Windows. Te klasy obejmują:

Inne klasy mogą rysować tylko powiązaną kontrolkę, gdy są dostępne style wizualizacji, a ich składowe zgłaszają wyjątek, jeśli style wizualizacji są wyłączone. Te klasy obejmują:

Aby uzyskać więcej informacji na temat używania tych klas do rysowania kontrolki, zobacz How to: Use a Control Rendering Class (Instrukcje: używanie klasy renderowania kontrolek).

Visual Style, element i klasy renderowania

System.Windows.Forms.VisualStyles Przestrzeń nazw zawiera klasy, których można użyć do rysowania i uzyskiwania informacji na temat dowolnej kontrolki lub elementu interfejsu użytkownika obsługiwanego przez style wizualizacji. Obsługiwane kontrolki obejmują typowe kontrolki, które mają klasę renderowania w System.Windows.Forms przestrzeni nazw (zobacz poprzednią sekcję), a także inne kontrolki, takie jak kontrolki tabulacji i kontrolki paska pomocniczego. Inne obsługiwane elementy interfejsu użytkownika obejmują części menu Start , pasek zadań i obszar niekliencki okien.

Główne klasy System.Windows.Forms.VisualStyles przestrzeni nazw to VisualStyleElement i VisualStyleRenderer. VisualStyleElement jest klasą podstawową identyfikującą dowolny element kontrolki lub interfejsu użytkownika obsługiwany przez style wizualne. Oprócz VisualStyleElement siebie System.Windows.Forms.VisualStyles przestrzeń nazw zawiera wiele zagnieżdżonych klas VisualStyleElement z właściwościami static , które zwracają VisualStyleElement dla każdego stanu kontrolki, części sterującej lub innego elementu interfejsu użytkownika obsługiwanego przez style wizualizacji.

VisualStyleRenderer Udostępnia metody, które pobierają i pobierają informacje o poszczególnych VisualStyleElement elementach zdefiniowanych przez bieżący styl wizualny systemu operacyjnego. Informacje, które można pobrać na temat elementu, obejmują jego domyślny rozmiar, typ tła i definicje kolorów. VisualStyleRendererOpakowuje funkcje interfejsu API stylów wizualizacji (UxTheme) z części powłoki systemu Windows Zestaw SDK do platformy systemu Windows. Aby uzyskać więcej informacji, zobacz Włączanie stylów wizualnych.

Aby uzyskać więcej informacji na temat używania elementów VisualStyleRenderer i , zobacz Jak renderować elementVisualStyleElement stylu wizualizacji.

Włączanie stylów wizualnych

Aby włączyć style wizualne dla aplikacji napisanej dla programu .NET Framework w wersji 1.0, programiści muszą zawierać manifest aplikacji określający, że comCtl32.dll w wersji 6 lub nowszej będzie używany do rysowania kontrolek. Aplikacje utworzone za pomocą programu .NET Framework w wersji 1.1 lub nowszej Application mogą używać Application.EnableVisualStyles metody klasy .

Sprawdzanie obsługi stylów wizualnych

Właściwość RenderWithVisualStylesApplication klasy wskazuje, czy bieżąca aplikacja rysuje kontrolki ze stylami wizualnymi. Podczas malowania kontrolki niestandardowej można sprawdzić wartość RenderWithVisualStyles , aby określić, czy kontrolka powinna być renderowana za pomocą stylów wizualizacji, czy bez. W poniższej tabeli wymieniono cztery warunki, które muszą istnieć, RenderWithVisualStyles aby zwrócić element true.

Stan Uwagi
System operacyjny obsługuje style wizualne. Aby sprawdzić ten warunek oddzielnie, użyj IsSupportedByOS właściwości VisualStyleInformation klasy .
Użytkownik włączył style wizualne w systemie operacyjnym. Aby sprawdzić ten warunek oddzielnie, użyj IsEnabledByUser właściwości VisualStyleInformation klasy .
Style wizualne są włączone w aplikacji. Style wizualne można włączyć w aplikacji, wywołując Application.EnableVisualStyles metodę lub za pomocą manifestu aplikacji, który określa, że comCtl32.dll w wersji 6 lub nowszej będzie używany do rysowania kontrolek.
Style wizualne są używane do rysowania obszaru klienta okien aplikacji. Aby sprawdzić ten warunek oddzielnie, użyj VisualStyleState właściwości Application klasy i sprawdź, czy ma wartość VisualStyleState.ClientAreaEnabled lub VisualStyleState.ClientAndNonClientAreasEnabled.

Aby określić, kiedy użytkownik włącza lub wyłącza style wizualizacji lub przełącza się z jednego stylu wizualizacji na inny, sprawdź UserPreferenceCategory.VisualStyle wartość w programach obsługi dla SystemEvents.UserPreferenceChanging zdarzeń lub SystemEvents.UserPreferenceChanged .

Ważne

Jeśli chcesz użyć VisualStyleRenderer polecenia do renderowania kontrolki lub elementu interfejsu użytkownika, gdy użytkownik włącza lub przełącza style wizualne, upewnij się, że robisz to podczas obsługi UserPreferenceChanged zdarzenia zamiast UserPreferenceChanging zdarzenia. Wyjątek zostanie zgłoszony, jeśli używasz VisualStyleRenderer klasy podczas obsługi UserPreferenceChangingklasy .

Zobacz też