我们如何从一种表单更改所有其他表单的背景颜色?

Jon*_*rew 2 .net c# application-settings visual-studio winforms

我们如何从一个表单 (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();
Run Code Online (Sandbox Code Playgroud)

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

Jim*_*imi 5

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

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

属性应用程序设置新

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

属性应用程序设置添加

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

属性应用程序设置

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

使用表单模板(或基本表单类)可以自动化整个过程。

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

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

Properties.Settings.Default.CommonFormBackColor = Color.Orange;
Run Code Online (Sandbox Code Playgroud)

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

Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)

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

Properties.Settings.Default.Reset();
Run Code Online (Sandbox Code Playgroud)