2009-02-13 6 views
0

Mon Windows Forms application utilise la ligne standard de code suivante afin que les styles visuels (thématisation) est activée pour toute l'application ...Pouvez-vous désactiver les styles/thèmes visuels pour un seul contrôle Windows?

Application.EnableVisualStyles(); 

... qui fonctionne très bien, tous les contrôles ont un thème apparence au lieu du cuirassé plat gris que vous obtiendriez autrement. Mais je dois désactiver les styles visuels pour une seule instance de contrôle. Je ne peux pas enlever la ligne ci-dessus parce que je perdrais le thème de tous les contrôles. Est-il possible de supprimer le thème d'une instance de contrôle unique?

FYI: En fait, je veux supprimer les thèmes d'une instance de DateTimePicker donc si la réponse générale est non, sauf pour le DateTimePicker alors ce serait assez bon. Je suis heureux d'utiliser la plate-forme invoke si la solution implique de jouer avec le contrôle au plus bas niveau.

Répondre

5

Il semble que vous pouvez utiliser SetWindowTheme sur un contrôle:

[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, "", ""); 

Original CodeProject Article

Questions connexes