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

时间:2018-11-29 21:23:14

标签: c# winforms visual-studio-2012

我对C#还是很陌生,并且一直在玩一些,对于我的项目,我有这两种形式, 在表格1中,我有这些变量

--onto

在表格2上

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

例如:

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

但是,Form 2中不存在ColCurrent主要和次要元素,我将如何传递它们?还是可以通过两种形式访问“全局”?

任何建议将不胜感激,

感谢您阅读

塞缪尔

1 个答案:

答案 0 :(得分:2)

Singleton是最适合您的解决方案。通读该页面-它会告诉您创建一个页面所需的一切。拥有它之后,您可以从配置文件中初始化它的属性,也可以只在代码中设置它们的属性,然后可以在全局范围内使用该类来配置任何新表单。

这是我通常使用的:

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 

正如史蒂夫所说,您也可以使用静态类。对于您的情况,这可能更简单。单例对于多线程应用程序非常有用,但是这样做可能有点过大。这是一个静态类的示例:

static class Config
{
    public static Color ColCurrentPrimary { get; set; }
}

然后您可以像这样使用它:

Config.ColCurrentPrimary

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