是否可以从单个表单更改所有表单的背面颜色?

时间:2015-08-25 11:44:49

标签: c# winforms

是否可以从单个表单更改所有表单的背景颜色?就像在我的系统中我有10个表单,并通过按钮单击某个表单,我可以更改所有其他表单的背面颜色并保存颜色?

2 个答案:

答案 0 :(得分:1)

为此,您可以在全局类中为背景颜色定义一个static变量,并在按钮单击时更改它。

EG。在你的每个表单代码将是这样的..

Form1.BackColor = globalClass.BackColor;

在GlobalClass.cs中:

public static string BackColor="Red";

在按钮上单击某种形式:

globalClass.BackColor = "Black";

这是一种可行的方法。

您可以相应地应用您的逻辑。

答案 1 :(得分:1)

将Sagar的答案进一步创建静态表单管理器

每个表单都会在那里注册,然后经理可以完成所有工作..

在构造函数中注册表单:

public Form1()
{
    FormManager.registerForm(this);
    InitializeComponent();
}

以及Closed个活动取消注册

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    FormManager.unRegisterForm(this);
}

现在,如果您愿意,可以像这样更改所有表单“BackColors

private void button1_Click(object sender, EventArgs e)
{
    FormManager.setAllBackcolors(Color.Green);
}

这是一个最小的表单管理器类:

public static class FormManager
{

    private static List<Form> formList = new List<Form>();

    public static void registerForm(Form form)
    {
        if (!formList.Contains(form)) formList.Add(form);
    }

    public static void unRegisterForm(Form form)
    {
        if (formList.Contains(form)) formList.Remove(form);
    }


    public static void setAllBackcolors(Color backColor)
    {
        foreach (Form f in formList) if (f != null) f.BackColor = backColor;
    }

}

如果您从共同的祖先派生您的表格,则注册&amp;取消注册只能在基本表单中编码一次。

当然,经理也可以用于其他任务,例如查找或订购表格。

如果您想影响新打开的表格,您可以将颜色存储在经理中,并在注册方法中添加一行..