我们怎样才能从一种形式改变所有其他形式的背景颜色?

How can we change the background color of all other forms from one form?

我们如何才能从一个表单 (settings.form) 更改所有其他表单的背景颜色?我想开发我的毕业设计。它是一个社交媒体桌面管理项目。我想用一个切换器将所有表单更改为暗模式。我怎样才能做到这一点?这是我的 settings.cs

public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        panel1.BackColor= Color.FromArgb(34, 36, 49);
        form1.BackColor = Color.FromArgb(34, 36, 49);
        form2.BackColor = Color.FromArgb(34, 36, 49);
        this.BackColor = Color.FromArgb(34, 36, 49);
        this.label1.BackColor = Color.White;
        this.label1.ForeColor = Color.FromArgb(34, 36, 49);
    }
    else
    {
        this.BackColor = Color.White;
        this.label1.BackColor = Color.FromArgb(34, 36, 49);
        this.label1.ForeColor = Color.White;
    }
    form1.Show();
    form1.Refresh();
    form2.Show();
    form2.Refresh();

切换时所有背景颜色都在变化。但是所有表格都是同时打开的。

您可以使用 (ApplicationSettings) 属性,可从表单设计器的 Properties 面板访问。展开 ApplicationSettings,打开 PropertyBinding 对话框,将设置添加到 BackColor 属性(例如,CommonFormBackColor),并对所有表单使用相同的设置。

您可以直接在应用程序设置的 PropertyBinding 对话框中创建设置:

这个新设置是在用户范围内创建的。
用户范围内的所有设置都基于每个用户应用并且可以更改。
Application Scope 中的设置被认为是只读的。

然后新设置将出现在 ApplicationSettings 可扩展 属性:

为更改此设置时应更改其背景颜色的所有表单指定相同的设置。
您当然可以将通用设置分配给任何其他控件的任何其他 属性。

使用 Form Template(或基本表单 class)可以使整个过程自动化。

当设置值在 运行 时更改时,所有打开的表单 - 以及稍后将打开的表单 - 将呈现相同的 BackColor.

您可以为所有表单的背景颜色设置一个新值,更改设置的值:
(所有打开的表单共享相同的 BackGround 颜色设置将立即改变颜色)

Properties.Settings.Default.CommonFormBackColor = Color.Orange;

您可以通过以下方式保存当前设置选择(以保留在当前 会话 中分配的值,以便在应用程序重新启动时再次使用它):

Properties.Settings.Default.Save();

您可以重置默认值(最初分配给设计器中的设置的值)调用:

Properties.Settings.Default.Reset();