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

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

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.