2016-01-20 3 views
1

J'utilise MetroFramework dans mon application de bureau et de définir tous les thèmes couleur par défaut tout en faisant la modification dans la forme parente Je veux mettre à jour tous les enfants sous forme de couleur .Comment changer la couleur de style MetroFramework à tous les contrôles

Vérifiez l'interface utilisateur de conception

http://thielj.github.io/MetroFramework

Changer Thèmes

var m = new Random(); 
int next = m.Next(0, 13); 
this.Style = (MetroColorStyle)next; 

Avec l'action de la couleur principale de forme change mais le controleur et l'enfant couleur de style de forme ne change pas.

+0

Si vous voulez un regard épatant Metro; le style et la coloration; vous êtes sans doute mieux en utilisant _WPF_ et _MahApps Metro_. Beaucoup plus facile que WinForms. [Ce projet Github] (https://github.com/thielj/MetroFramework/graphs/contributors) dont vous avez parlé, a l'air plutôt triste. Aucune activité depuis la mi-2013 – MickyD

+0

@Micky c'est à l'origine une copie de MetroFramework et non pour WCF. –

+0

MetroFramework est assez robuste, je ne vois pas de problème à utiliser une librairie de 2 ans et demi si elle est robuste! –

Répondre

2

HHI Sunil,

Exmple -1 Boîte à outils dans MetroStyleManager ajouter

Set Setting

Exemple 2 (Méthode d'extension)

public static void SetDefaultStyle(this IContainer contr, MetroForm owner, MetroColorStyle style) 
    { 
     MetroStyleManager manager = FindManager(contr, owner); 
     manager.Style = style; 
    } 
    public static void SetDefaultTheme(this IContainer contr, MetroForm owner, MetroThemeStyle thme) 
    { 
     MetroStyleManager manager = FindManager(contr, owner); 
     manager.Theme = thme; 
    } 
    private static MetroStyleManager FindManager(IContainer contr, MetroForm owner) 
    { 
     MetroStyleManager manager = new MetroStyleManager(contr); 
     foreach (IComponent item in contr.Components) 
     { 
      if (((MetroStyleManager)item).Owner == owner) 
      { 
       manager = (MetroStyleManager)item; 
      } 
     } 
     return manager; 
    } 

utilisant:

public frmMain() 
    { 
     InitializeComponent();    
     this.components.SetDefaultStyle(this, MetroColorStyle.Purple); 
    } 

Exemple - 3: Si vous souhaitez définir le thème de toutes les formes.

Étape 1: Créer une nouvelle classe "MyExtensions.cs". Ce contenu est:

public static class MyExtensions 
{ 
    //What is your style 
    private const MetroColorStyle FormStyle = MetroColorStyle.Green; 
    public static void SetStyle(this IContainer container, MetroForm ownerForm) 
    { 
     if (container == null) 
     { 
      container = new System.ComponentModel.Container(); 
     } 
     var manager = new MetroFramework.Components.MetroStyleManager(container); 
     manager.Owner = ownerForm; 
     container.SetDefaultStyle(ownerForm, FormStyle); 


    } 
    public static void SetDefaultStyle(this IContainer contr, MetroForm owner, MetroColorStyle style) 
    { 
     MetroStyleManager manager = FindManager(contr, owner); 
     manager.Style = style; 
     owner.Style = style; 
    } 
    public static void SetDefaultTheme(this IContainer contr, MetroForm owner, MetroThemeStyle thme) 
    { 
     MetroStyleManager manager = FindManager(contr, owner); 
     manager.Theme = thme; 
    } 
    private static MetroStyleManager FindManager(IContainer contr, MetroForm owner) 
    { 
     MetroStyleManager manager = null; 
     foreach (IComponent item in contr.Components) 
     { 
      if (((MetroStyleManager)item).Owner == owner) 
      { 
       manager = (MetroStyleManager)item; 
      } 
     } 
     return manager; 
    } 
} 

Étape 2: Dans tous les formulaires dont vous aurez besoin d'appeler la méthode inférieure dans la méthode « Load ». Excemple Form1.cs pour

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.components.SetStyle(this); 
} 
+0

Avez-vous réalisé un projet dans MetroFramework? –

+0

Oui j'ai fait le projet. @SunilAcharya [Projet SS] (http://imgur.com/a/q5g5X) –

+0

Mais comment puis-je appliquer le style et le thème sélectionnés à toutes mes formes ouvertes? – Pratikk

0
metroStyleManager1.Theme = metroStyleManager1.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light; 
this.Theme = metroStyleManager1.Theme; 
this.Refresh();