首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MetroFramework样式颜色更改为所有控件

如何将MetroFramework样式颜色更改为所有控件
EN

Stack Overflow用户
提问于 2016-01-20 21:23:57
回答 3查看 30K关注 0票数 2

我在桌面应用程序中使用MetroFramework,并将所有主题颜色设置为默认值,同时在父窗体中进行更改,我希望将所有子窗体和控件颜色更新为par主题颜色。

检查设计UI

http://thielj.github.io/MetroFramework

更改主题

代码语言:javascript
复制
var m = new Random();
int next = m.Next(0, 13);
this.Style = (MetroColorStyle)next;

使用该操作时,主窗体的颜色会发生变化,但控件和子窗体样式的颜色不会发生变化。

EN

回答 3

Stack Overflow用户

发布于 2016-08-07 00:03:30

hHi Sunil

示例-1\f25 MetroStyleManager add -1\f6中的-1\f25-1\f6工具箱

示例2(扩展方法)

代码语言:javascript
复制
    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;
    }

使用:

代码语言:javascript
复制
    public frmMain()
    {
        InitializeComponent();            
        this.components.SetDefaultStyle(this, MetroColorStyle.Purple);
    }

示例- 3:如果您想为所有表单设置主题。

步骤1:创建新类MyExtensions.cs。这是内容:

代码语言:javascript
复制
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用于

代码语言:javascript
复制
private void Form1_Load(object sender, EventArgs e)
{
    this.components.SetStyle(this);
}
票数 6
EN

Stack Overflow用户

发布于 2018-10-05 20:56:05

我知道这是一个古老的问题,但就像您正在寻找解决方案一样,它就像使用StyleManagerClone()方法一样简单,这将把样式更改为窗体和其中包含的所有MetroFrameWork控件

代码语言:javascript
复制
Form1 _form1 = new Form1();
this.StyleManager.Clone(_form1); //This will do everything for you

注意:表单控件的UseStyleColors属性必须启用True,才能工作。

票数 1
EN

Stack Overflow用户

发布于 2016-10-15 18:43:40

代码语言:javascript
复制
metroStyleManager1.Theme = metroStyleManager1.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light;
this.Theme = metroStyleManager1.Theme;
this.Refresh();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34901295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档