在表单之间传递变量(颜色值)
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
语句以使其可访问。
我还是 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
语句以使其可访问。