【发布时间】:2012-04-03 10:52:33
【问题描述】:
是否可以添加到 .NET 中的颜色列表?例如 Color.Red Color.Green 等...已经存在,但我想添加更多颜色,例如 Color.SlightlyDarkGray...
编辑: 我需要这个,所以我可以为我的自定义用户控件设置默认颜色,而不是每次更改我想要的默认颜色时重新输入 245、65、65 或其他任何东西
【问题讨论】:
标签: c# .net visual-studio colors struct
是否可以添加到 .NET 中的颜色列表?例如 Color.Red Color.Green 等...已经存在,但我想添加更多颜色,例如 Color.SlightlyDarkGray...
编辑: 我需要这个,所以我可以为我的自定义用户控件设置默认颜色,而不是每次更改我想要的默认颜色时重新输入 245、65、65 或其他任何东西
【问题讨论】:
标签: c# .net visual-studio colors struct
否 - Color 中的所有字段都已存在;您不能向该类型添加任何内容。
你总是可以创建你自己的类型,叫做MoreColors。显然,如果您感兴趣的话,这不会影响设计器中显示的内容。
【讨论】:
Color。
不,没有办法做到这一点。您可以考虑添加extension method,但它(如果会的话)只是一个方法,不是静态字段,因为它是在原生类中。
【讨论】:
你可以像这样实现 Jon Skeet 的想法
public struct MoreColors // or public static class
{
public static Color SomeNiceColor { get { return Color.FromArgb(12,136,20); } }
public static Color MyPreferredColor { get { return Color.FromArgb(209,80,0); } }
}
从 C# 6.0 开始,您可以使用 expression-bodied 属性。它们在语义上是相同的,只是语法更简单。
public struct MoreColors
{
public static Color SomeNiceColor => Color.FromArgb(12,136,20);
public static Color MyPreferredColor => Color.FromArgb(209,80,0);
}
使用带有初始化程序的auto-implemented 只读属性(从 C# 6.0 开始也是如此)的方法更有效,因为它们只会被初始化一次,即使被多次访问:
public struct MoreColors
{
public static Color SomeNiceColor { get; } = Color.FromArgb(12,136,20);
public static Color MyPreferredColor { get; } = Color.FromArgb(209,80,0);
}
【讨论】: