Rendering dei controlli con stili visivi

.NET Framework fornisce il supporto per i controlli di rendering e altri elementi dell'interfaccia utente di Windows usando gli stili di visualizzazione nei sistemi operativi che li supportano. In questo argomento vengono illustrati i diversi livelli di supporto in .NET Framework per il rendering dei controlli e di altri elementi dell'interfaccia utente con lo stile di visualizzazione corrente del sistema operativo.

Classi di rendering per i controlli comuni

Il rendering di un controllo si riferisce alla grafica dell'interfaccia utente di un controllo. Lo spazio dei nomi System.Windows.Forms include la classe ControlPaint per il rendering di alcuni controlli comuni di Windows Form. Questa classe consente tuttavia di disegnare controlli nello stile classico di Windows, pertanto può essere difficile mantenere un'esperienza coerente per l'interfaccia utente quando si creano controlli personalizzati nelle applicazioni in cui sono abilitati gli stili di visualizzazione.

.NET Framework 2.0 include classi nello spazio dei System.Windows.Forms nomi che eseguono il rendering delle parti e degli stati dei controlli comuni con stili di visualizzazione. Ciascuna di queste classi include metodi static per la creazione del controllo o delle relative parti in un determinato stato con lo stile di visualizzazione corrente del sistema operativo.

Alcune di queste classi sono progettate per creare il relativo controllo, indipendentemente dalla disponibilità degli stili di visualizzazione. Se gli stili di visualizzazione sono abilitati, i membri della classe creeranno il relativo controllo con gli stili impostati. Se invece sono disabilitati, i membri della classe creeranno il controllo nello stile classico di Windows. Tali classi includono:

Altre classi possono creare il relativo controllo solo quando sono disponibili gli stili di visualizzazione e i membri di tali classi genereranno un'eccezione se gli stili di visualizzazione sono disabilitati. Tali classi includono:

Per altre informazioni sull'uso di queste classi per la creazione di un controllo, vedere How to: Use a Control Rendering Class.

Elemento dello stile di visualizzazione e classi di rendering

Lo spazio dei nomi System.Windows.Forms.VisualStyles include classi che consentono di disegnare e ottenere informazioni su qualsiasi controllo o elemento dell'interfaccia utente supportato dagli stili di visualizzazione. I controlli supportati includono i controlli comuni che hanno una classe di rendering nello spazio dei nomi System.Windows.Forms (vedere la sezione precedente), nonché altri controlli, ad esempio controlli Struttura a schede e controlli Rebar. Tra gli altri elementi dell'interfaccia utente supportati figurano le parti del menu Start , la barra delle applicazioni e l'area non client di Windows.

Le classi principali dello spazio dei nomi System.Windows.Forms.VisualStyles sono VisualStyleElement e VisualStyleRenderer. VisualStyleElement è una classe di base per l'identificazione di qualsiasi controllo o elemento dell'interfaccia utente supportato dagli stili di visualizzazione. Oltre a VisualStyleElement , lo spazio dei nomi System.Windows.Forms.VisualStyles include molte classi nidificate di VisualStyleElement con proprietà static che restituiscono un elemento VisualStyleElement per ogni stato di un controllo, di una parte di controllo o di un altro elemento dell'interfaccia utente supportato dagli stili di visualizzazione.

VisualStyleRenderer offre i metodi per disegnare e ottenere informazioni su ogni elemento VisualStyleElement definito dallo stile di visualizzazione corrente del sistema operativo. Le informazioni che possono essere recuperate su un elemento includono la dimensione predefinita, il tipo di sfondo e le definizioni dei colori. VisualStyleRenderer esegue il wrapping della funzionalità dell'API degli stili di visualizzazione (UxTheme) dalla parte della shell di Windows di Windows Platform SDK. Per altre informazioni, vedere Abilitazione degli stili di visualizzazione.

Per altre informazioni sull'uso di VisualStyleRenderer e VisualStyleElement, vedere How to: Render a Visual Style Element.

Enabling Visual Styles (Abilitazione degli stili di visualizzazione)

Per abilitare gli stili di visualizzazione per un'applicazione scritta per .NET Framework versione 1.0, i programmatori devono includere un manifesto dell'applicazione che specifica che ComCtl32.dll versione 6 o successiva verrà usato per disegnare i controlli. Le applicazioni compilate con .NET Framework versione 1.1 o successiva possono usare il Application.EnableVisualStyles metodo della Application classe .

Verifica del supporto degli stili di visualizzazione

La proprietà RenderWithVisualStyles della classe Application indica se l'applicazione corrente sta creando i controlli con gli stili di visualizzazione. Quando si disegna un controllo personalizzato, è possibile controllare il valore di RenderWithVisualStyles per determinare se è necessario eseguire il rendering del controllo con o senza gli stili di visualizzazione. La tabella seguente elenca le quattro condizioni necessarie affinché RenderWithVisualStyles restituisca true.

Condizione Note
Il sistema operativo supporta gli stili di visualizzazione. Per verificare questa condizione separatamente, usare la proprietà IsSupportedByOS della classe VisualStyleInformation .
L'utente ha abilitato gli stili di visualizzazione nel sistema operativo. Per verificare questa condizione separatamente, usare la proprietà IsEnabledByUser della classe VisualStyleInformation .
Gli stili di visualizzazione sono abilitati nell'applicazione. Per abilitare gli stili di visualizzazione per un'applicazione, chiamare il metodo Application.EnableVisualStyles o usare un manifesto dell'applicazione in cui si specifica che per disegnare i controlli verrà usata ComCtl32.dll versione 6 o successiva.
Gli stili di visualizzazione vengono usati per disegnare l'area client delle finestre dell'applicazione. Per verificare questa condizione separatamente, usare la proprietà VisualStyleState della classe Application e verificare che abbia il valore VisualStyleState.ClientAreaEnabled o VisualStyleState.ClientAndNonClientAreasEnabled.

Per determinare quando un utente abilita o disabilita gli stili di visualizzazione o passa da uno stile di visualizzazione a un altro, verificare la presenza del valore UserPreferenceCategory.VisualStyle nei gestori per gli eventi SystemEvents.UserPreferenceChanging o SystemEvents.UserPreferenceChanged .

Importante

Se si vuole usare VisualStyleRenderer per il rendering di un controllo o di un elemento dell'interfaccia utente quando l'utente abilita o cambia gli stili di visualizzazione, assicurarsi di eseguire l'operazione durante la gestione dell'evento UserPreferenceChanged anziché dell'evento UserPreferenceChanging . Se si usa la classe VisualStyleRenderer durante la gestione di UserPreferenceChanging, verrà generata un'eccezione.

Vedi anche