Udostępnij za pośrednictwem


Renderowanie kontrolek ze stylami wizualnymi

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. Przestrzeń nazw System.Windows.Forms udostępnia klasę ControlPaint do renderowania 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 przestrzeni nazw System.Windows.Forms, które renderuje części i stany wspólnych kontrolek za pomocą stylów wizualnych. Każda z tych klas zawiera static metod do rysowania elementu sterującego lub części elementu sterującego 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 Instrukcje: używanie klasy renderowania kontrolek.

Element Stylu Wizualnego i Klasy Renderowania

Przestrzeń nazw System.Windows.Forms.VisualStyles zawiera klasy, których można użyć do rysowania i uzyskiwania informacji na temat dowolnego elementu kontrolki lub interfejsu użytkownika obsługiwanego przez style wizualizacji. Obsługiwane kontrolki obejmują typowe kontrolki, które mają klasę renderowania w przestrzeni nazw System.Windows.Forms (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 przestrzeni nazw System.Windows.Forms.VisualStylesVisualStyleElement i VisualStyleRenderer. VisualStyleElement jest klasą podstawową identyfikującą dowolny element kontrolki lub interfejsu użytkownika obsługiwany przez style wizualizacji. Oprócz samego VisualStyleElement przestrzeń nazw System.Windows.Forms.VisualStyles 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 rysują i pobierają informacje o poszczególnych VisualStyleElement zdefiniowanych przez bieżący wizualny styl systemu operacyjnego. Informacje, które można pobrać na temat elementu, obejmują jego domyślny rozmiar, typ tła i definicje kolorów. VisualStyleRenderer opakowuje funkcjonalność interfejsu API stylów wizualnych (UxTheme) z części powłoki systemu Windows Windows Platform SDK. Aby uzyskać więcej informacji, zobacz sekcję Włączanie stylów wizualnych.

Aby uzyskać więcej informacji na temat używania VisualStyleRenderer i VisualStyleElement, zobacz Instrukcje: renderowanie elementu stylu wizualnego.

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 wersji 6 lub nowszej będą używane do rysowania kontrolek. Aplikacje utworzone przy użyciu programu .NET Framework w wersji 1.1 lub nowszej mogą używać metody Application.EnableVisualStyles klasy Application.

Sprawdzanie obsługi stylów wizualnych

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

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

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

Ważny

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

Zobacz też