Domanda

La mia applicazione Windows Form utilizza la seguente linea standard di codice in modo che gli stili di visualizzazione (tematizzazione) è abilitata per l'intera applicazione ...

Application.EnableVisualStyles();

... che funziona bene, tutti i controlli hanno un aspetto a tema al posto del grigio corazzata piatta che si otterrebbe altrimenti. Ma ho bisogno di disattivare gli stili di visualizzazione solo per una singola istanza di controllo. Non riesco a rimuovere la linea di cui sopra, perché poi avrei perso tematizzazione da tutti i controlli. E 'possibile rimuovere tematizzazione da una singola istanza di controllo?

FYI: Come succede Voglio rimuovere tematizzazione da un'istanza DateTimePicker quindi se la risposta generale non è tranne che per il DateTimePicker allora sarebbe abbastanza buono. Sono felice di poter utilizzare la piattaforma invoke se la soluzione coinvolge giocare con il controllo al livello più basso.

È stato utile?

Soluzione

Sembra che è possibile utilizzare SetWindowTheme su un controllo:

[DllImport("uxtheme", ExactSpelling = true, CharSet = CharSet.Unicode)]
public extern static Int32 SetWindowTheme (IntPtr hWnd, 
              String textSubAppName, String textSubIdList);

yourControl.FlatStyle = FlatStyle.System;
SetWindowTheme(yourControl.Handle, "", "");

originale CodeProject Articolo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top