在表单之间传递变量(颜色值)

Passing a Variable between forms (colour values)

我还是 c# 的新手并且已经玩了一会儿,对于我的项目我有这两种形式, 在表格 1 上我有这些变量

 Color ColCurrentPrimary = Color.FromArgb(35, 39, 42);
 Color ColCurrentSecondary = Color.FromArgb(44, 47, 51);

在表格 2 上

我有一个 window 对话框,这应该保持相同的主题

例如:

this.BackColor = ColCurrentPrimary;
this.ForeColor = ColCurrentSecondary;

但是,Form 2 上不存在 ColCurrent Primary 和 secondary,我该如何通过它们?或者是否有可以从两种形式访问的 "Global"?

如有任何建议,我们将不胜感激,

感谢您的阅读,

塞缪尔

一个非常适合您的解决方案是 Singleton。通读该页面 - 它会告诉您创建页面所需的一切信息。一旦你拥有它,你就可以从配置文件初始化它的属性或者只是在代码中设置它们 - 然后 class 可以全局使用来配置任何新表单。

这是我常用的:

public sealed class Singleton
{
    private static Singleton instance = null;
    private static readonly object padlock = new object();

    //add public properties here to use for your config!
    public Color ColCurrentPrimary { get; set; }

    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            lock (padlock)
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }
    }
}

那么你可以这样使用它:

Singleton.Instance.ColCurrentPrimary 

正如史蒂夫提到的,您也可以使用静态 class。这对你的情况来说可能更简单。单身人士非常适合多线程应用程序,但对此可能有点矫枉过正。这是静态 class:

的示例
static class Config
{
    public static Color ColCurrentPrimary { get; set; }
}

那么你可以这样使用它:

Config.ColCurrentPrimary

您只需确保在命名空间中定义 class,您可以访问需要访问它的地方,或者添加 using 语句以使其可访问。