Rendering dei controlli con stili visivi
.NET Framework supporta il rendering dei controlli e di altri elementi dell'interfaccia utente (UI, User Interface) Windows mediante l'utilizzo degli stili visivi supportati nei sistemi operativi. In questo argomento vengono descritti i diversi livelli di supporto disponibili in .NET Framework per il rendering dei controlli e di altri elementi UI con lo stile visivo corrente del sistema operativo.
Rendering delle classi per i controlli comuni
Il rendering di un controllo fa riferimento alla creazione dell'interfaccia utente di un controllo. Lo spazio dei nomi System.Windows.Forms comprende la classe ControlPaint per il rendering di alcuni controlli Windows Form comuni. Tuttavia questa classe disegna i controlli nello stile Windows classico e non è in grado di garantire la coerenza dell'interfaccia utente quando vengono disegnati controlli personalizzati nelle applicazioni per cui sono attivati degli stili visivi.
.NET Framework 2.0 include classi nello spazio dei nomi System.Windows.Forms che eseguono il rendering delle parti e degli stati di controlli comuni con stili visivi. Ciascuna di queste classi comprende metodi static per il disegno del controllo o di parti del controllo in uno stato particolare con lo stile visivo corrente del sistema operativo.
Alcune di queste classi sono state progettate per disegnare il controllo correlato indipendentemente dalla disponibilità degli stili visivi. Se gli stili visivi sono attivati, i membri della classe disegnano il controllo correlato con gli stili visivi; se gli stili visivi sono disabilitati, i membri della classe disegnano il controllo nello stile Windows classico. Tra queste classi figurano:
Altre classi possono disegnare il controllo correlato solo quando sono disponibili gli stili visivi. Se gli stili visivi sono disabilitati, i membri delle classi generano un'eccezione. Tra queste classi figurano:
Per ulteriori informazioni sull'utilizzo di queste classi per il disegno di un controllo, vedere Procedura: utilizzare una classe Control Rendering.
Classi VisualStyleElement e VisualStyleRenderer
Lo spazio dei nomi System.Windows.Forms.VisualStyles comprende classi che possono essere utilizzate per disegnare e ottenere informazioni su qualsiasi controllo o elemento dell'interfaccia utente supportato dagli stili visivi. Tra i controlli supportati figurano controlli comuni per cui è disponibile una classe di rendering nello spazio dei nomi System.Windows.Forms (vedere la sezione precedente) e altri controlli, quali il controllo Struttura a schede e il controllo Rebar. Altri elementi dell'interfaccia utente supportati includono le parti del menu Start, la barra delle applicazioni e l'area non client di Windows.
Le classi principali degli spazi dei nomi System.Windows.Forms.VisualStyles sono VisualStyleElement e VisualStyleRenderer. La classe base VisualStyleElement consente di identificare qualsiasi controllo o elemento dell'interfaccia utente supportato dagli stili di visualizzazione. Oltre alla classe VisualStyleElement lo spazio dei nomi System.Windows.Forms.VisualStyles comprende molte classi annidate di VisualStyleElement con proprietà static che restituiscono una classe VisualStyleElement per ogni stato di un controllo, una parte di un controllo o un altro elemento dell'interfaccia utente supportati dagli stili visivi.
La classe VisualStyleRenderer comprende i metodi che consentono di disegnare e ottenere le informazioni su ciascuna classe VisualStyleElement definita dallo stile visivo corrente del sistema operativo. Le informazioni che vengono restituite per un determinato elemento comprendono le sue dimensioni predefinite, il tipo di sfondo e la definizione dei colori. VisualStyleRenderer include la funzionalità dell'interfaccia API degli stili di visualizzazione (UxTheme) dalla parte Shell di Windows del Windows Platform SDK. Per ulteriori informazioni, vedere "Using Windows XP Visual Styles" (informazioni in lingua inglese) nella sezione Platform SDK della MSDN Library all'indirizzohttps://msdn.microsoft.com/it-it/library/default.aspx.
Per ulteriori informazioni sull'utilizzo delle classi VisualStyleRenderer e VisualStyleElement, vedere Procedura: eseguire il rendering di un elemento dello stile visivo.
Abilitazione degli stili visivi
Per abilitare gli stili visivi per un'applicazione scritta per .NET Framework versione 1.0, i programmatori devono includere un manifesto dell'applicazione che specifica che per il disegno dei controlli verrà utilizzato ComCtl32.dll 6 o versione successiva. Le applicazioni compilate con .NET Framework 1.1 o versione successiva possono utilizzare il metodo Application.EnableVisualStyles della classe Application.
Verifica del supporto degli stili visivi
La proprietà RenderWithVisualStyles della classe Application indica se l'applicazione corrente disegna i controlli con gli stili visivi. Quando si disegna un controllo personalizzato, è possibile verificare il valore della proprietà RenderWithVisualStyles per determinare se è necessario eseguire il rendering del controllo con o senza gli stili visivi. Nella tabella seguente sono riportate le quattro condizioni necessarie affinché la proprietàRenderWithVisualStyles restituisca il valore true.
Condizione |
Note |
---|---|
Il sistema operativo supporta gli stili visivi. |
Per verificare questa condizione separatamente, utilizzare la proprietà IsSupportedByOS della classe VisualStyleInformation. |
L'utente ha attivato gli stili visivi nel sistema operativo. |
Per verificare questa condizione separatamente, utilizzare la proprietà IsEnabledByUser della classe VisualStyleInformation. |
Gli stili di visualizzazione sono attivati nell'applicazione. |
Per attivare gli stili visivi in un'applicazione, è necessario chiamare il metodo Application.EnableVisualStyles o utilizzare un manifesto dell'applicazione che specifica che per il disegno dei controlli verrà usato ComCtl32.dll 6 o versione successiva. |
Gli stili visivi vengono usati per disegnare l'area client delle finestre dell'applicazione. |
Per verificare questa condizione separatamente, utilizzare la proprietà VisualStyleState della classe Application e assicurarsi che sia impostato il valore VisualStyleState.ClientAreaEnabled o VisualStyleState.ClientAndNonClientAreasEnabled. |
Per determinare quando un utente attiva o disabilita gli stili visivi o passa da uno stile visivo a un altro, verificare il valore UserPreferenceCategory.VisualStyle nei gestori per gli eventi SystemEvents.UserPreferenceChanging o SystemEvents.UserPreferenceChanged.
Importante |
---|
Se si desidera utilizzare la classe VisualStyleRenderer per eseguire il rendering di un controllo o un elemento dell'interfaccia utente quando l'utente attiva o cambia gli stili visivi, assicurarsi di farlo quando si gestisce l'evento UserPreferenceChanged e non l'evento UserPreferenceChanging. Se si utilizza la classe VisualStyleRenderer durante la gestione dell'evento UserPreferenceChanging, viene generata un'eccezione. |