Rendre une application .net compatible avec les thèmes de microsoft windows xp

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 428 fois - Téléchargée 28 fois

Contenu du snippet

Selon Microsoft, pour rendre une application développée en .NET compatible avec les thèmes visuels de Microsoft Windows XP, il faut avoir une fonction "Main" semblable à celle-ci. Remarquez la ligne "Application.EnableVisualStyles();".

L'autre ligne, "Application.DoEvents();", est recommandée par Microsoft lorsque l'on utilise des contrôles ImageList. Cette ligne doit obligatoirement être avant "Application.Run()".

[STAThread]
public static void Main(string[] args) {
Application.EnableVisualStyles();
Application.DoEvents();
Application.Run(new MainForm());
}

En suite, il faut affecter à la propriété "FlatStyle" la valeur "FlatStyle.System" pour les contrôles qui prennent en charge la propriété "FlatStyle". C'est ce que fait le code ci-contre...

Source / Exemple :


using System;
using System.Windows.Forms;
using System.Reflection;

namespace Utilitaire {

  public class Form
  {
    static public void EnableSystemFlatStyle(System.Windows.Forms.Form f) {
      if (f == null)
        return;

      foreach(Control c in f.Controls) {
        SetSystemFlatStyle(c);
      }
    }

    static private void SetSystemFlatStyle(Control ctrl) {
      if (ctrl == null)
        return;

      Type t = ctrl.GetType();
      PropertyInfo pinfo = t.GetProperty("FlatStyle");
      if (pinfo != null)
        pinfo.SetValue(ctrl, FlatStyle.System, null);

      pinfo = t.GetProperty("Controls");
      if (pinfo == null)
        return;

      foreach(Control c in (ControlCollection) pinfo.GetValue(ctrl, null)) {
        SetSystemFlatStyle(c);
      }
    }
  }
}

Conclusion :


Pour affecter la valeur "FlatStyle.System" à la propriété "FlatStyle" de tous les contrôles ajoutés à la fenêtre (y compris les contrôles contenant en contenant d'autres), vous avez plusieurs solutions:

1) Surcharger le méthode "void OnLoad(System.EventArgs e)"
2) Capturer l'événement "Load"

Et appeler la méthode "Utilitaire.Form.EnableSystemFlatStyle(System.Windows.Forms.Form f)".

[Exemple en VB .NET (pour les débutants)]
Private Sub FormLoad(sender As Object, e As EventArgs) Handles this.Load
Utilitaire.Form.EnableSystemFlatStyle(this);
End Sub
/Exemple

A voir également

Ajouter un commentaire

Commentaires

Messages postés
18
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
20 septembre 2005

Je suis débutant
void MainFormLoad(object sender, System.EventArgs e) {
Utilitaire.Form.EnableSystemFlatStyle(this);
...
}

c'est a dire ???

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.