Передача переменной между формами (значения цвета) - PullRequest
0 голосов
/ 30 ноября 2018

Я все еще новичок в c # и немного поиграюсь, для моего проекта у меня есть эти две формы, в форме 1 у меня есть эти переменные

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

В форме 2

У меня есть диалоговое окно, и в нем должна быть одна и та же тема

например:

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

Однако ColCurrent Primary и Secondary не существует в Form 2, как мне поступить?проходя их?или есть «Глобал», к которому можно получить доступ из обеих форм?

любой совет будет высоко ценится,

спасибо за чтение,

Самуил

1 Ответ

0 голосов
/ 30 ноября 2018

Решение, которое будет очень хорошо работать для вас, будет 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 

Как уже упоминал Стив, вы можете использовать статический класстакже.Это может быть проще для вашего случая.Singletons отлично подходят для многопоточных приложений, но могут быть немного излишними для этого.Вот пример статического класса:

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

Тогда вы можете использовать его следующим образом:

Config.ColCurrentPrimary

Вам просто нужно убедиться, что вы определили класс в пространстве имен, котороеу вас будет доступ к тому месту, где вам нужно получить доступ, или добавьте оператор using, чтобы сделать его доступным.

...