2010-06-08 5 views
1

Il est possible d'utiliser les styles XP dans Vista/Win7? Si oui, est-ce possible de le faire pour un seul contrôle?Possibilité d'utiliser XP Visual Style dans Vista/Win7?

Je sais que je peux désactiver les styles visuels un contrôle à la fois en utilisant SetWindowTheme(). Je sais qu'il est possible de désactiver les styles visuels pour l'application des formulaires gagnants en supprimant l'appel EnableVisualStyles.

La raison pour laquelle je demande est parce que dans l'application cela serait utilisé un contrôle dans un état d'erreur a sa couleur de fond devenu rouge. Cela ne fonctionne pas pour ComboBox lorsque l'application s'exécute sous Vista/Win7. Changer la couleur de fond change seulement pour la liste déroulante pas le contrôle réel.

J'ai également cherché à obtenir le BackColor pour changer la couleur de la zone de liste déroulante comme il le fait dans XP et lorsque les styles visuels sont désactivés, mais n'ont pas trouvé de moyen de le faire non plus.

Et oui, ce serait facilement résolu dans WPF .../cry. :)

Répondre

3

Eh bien, vous savez déjà comment le faire.

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

class MyComboBox : ComboBox { 
    protected override void OnHandleCreated(EventArgs e) { 
     base.OnHandleCreated(e); 
     SetWindowTheme(this.Handle, "", ""); 
    } 
    [DllImport("uxtheme.dll")] 
    private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist); 
} 

Peu importe ce que vous faites, il cherchera crûment main à un utilisateur qui a l'habitude de voir ses dessins d'interface utilisateur ayant des styles visuels activés. Et cochez celui qui a des déficiences visuelles, quelque chose qui peut vous faire poursuivre aux États-Unis. Windows Forms a déjà un très bon moyen d'indiquer les erreurs, le ErrorProvider a été conçu pour le faire.

+0

Merci d'avoir répondu. J'ai presque assumé la réponse à cette question, mais j'ai besoin de pondérer mes options. J'en ai un peu plus puisqu'il s'agit d'une application interne. – Tony

+0

J'accepte ceci comme réponse. Même s'il y a un moyen de faire ce que j'ai demandé dans ma question, ce n'est pas correct pour un certain nombre de raisons et cela causera plus de problèmes à l'avenir. Comme je l'ai déjà dit, je ne fais que peser les options. Même les mauvaises idées doivent être examinées de temps en temps. ;) – Tony

Questions connexes