Pouvez-vous désactiver les styles / thématisation visuel pour juste une seule fenêtre de contrôle?

StackOverflow https://stackoverflow.com/questions/544203

Question

My Windows Forms application utilise la ligne standard de code suivante afin que les styles visuels (thématisation) est activée pour toute l'application ...

Application.EnableVisualStyles();

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

Pour votre information: Comme il arrive, je veux supprimer thématisation d'une instance DateTimePicker donc si la réponse générale est non, sauf DateTimePicker alors ce serait assez bon. Je suis heureux d'utiliser Invoke la plate-forme si la solution consiste à jouer avec le contrôle au niveau le plus bas.

Était-ce utile?

La solution

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

originale CodeProject article

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top