我在桌面应用程序中使用MetroFramework,并将所有主题颜色设置为默认值,同时在父窗体中进行更改,我希望将所有子窗体和控件颜色更新为par主题颜色。
检查设计UI
http://thielj.github.io/MetroFramework
更改主题
var m = new Random();
int next = m.Next(0, 13);
this.Style = (MetroColorStyle)next;使用该操作时,主窗体的颜色会发生变化,但控件和子窗体样式的颜色不会发生变化。
发布于 2016-08-07 00:03:30
hHi Sunil
示例-1\f25 MetroStyleManager add -1\f6中的-1\f25-1\f6工具箱


示例2(扩展方法)
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;
}使用:
public frmMain()
{
InitializeComponent();
this.components.SetDefaultStyle(this, MetroColorStyle.Purple);
}示例- 3:如果您想为所有表单设置主题。
步骤1:创建新类MyExtensions.cs。这是内容:
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;
}
}步骤2:在所有表单中,您都需要调用"Load“方法中的下级方法。示例Form1.cs用于
private void Form1_Load(object sender, EventArgs e)
{
this.components.SetStyle(this);
}发布于 2018-10-05 20:56:05
我知道这是一个古老的问题,但就像您正在寻找解决方案一样,它就像使用StyleManager的Clone()方法一样简单,这将把样式更改为窗体和其中包含的所有MetroFrameWork控件
Form1 _form1 = new Form1();
this.StyleManager.Clone(_form1); //This will do everything for you注意:表单控件的
UseStyleColors属性必须启用True,才能工作。

发布于 2016-10-15 18:43:40
metroStyleManager1.Theme = metroStyleManager1.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light;
this.Theme = metroStyleManager1.Theme;
this.Refresh();https://stackoverflow.com/questions/34901295
复制相似问题