当我使用System.Drawing.Color
或System.Drawing.Brush
参数调用函数时,即使Color
,Visual Studio也会自动显示预定义颜色/画笔的列表,例如枚举是一个结构,Brush
是一个类。
如何使用自己的struct / class实现相同的效果?
修改
我认为这是VB特有的,似乎IntelliSense在C#中的工作方式完全不同。为清晰起见,我添加了屏幕截图。
使用Color工作:
我自己的结构不起作用:
答案 0 :(得分:2)
拥有public static
字段或属性。
颜色特别使用公共只读属性。有关示例,请参阅Color.AliceBlue
答案 1 :(得分:1)
它们是属性,XML文档指定要在Intellisense的下拉列表中显示的颜色。
来自Microsoft Source - System.Drawing.Color:
/// <include file='doc\Color.uex' path='docs/doc[@for="Color.AliceBlue"]/*' />
/// <devdoc>
/// <para>[To be supplied.]</para>
/// </devdoc>
public static Color AliceBlue {
get {
return new Color(KnownColor.AliceBlue);
}
}
答案 2 :(得分:0)
对于您将看到的color.cs中的c#
/// <include file='doc\Color.uex' path='docs/doc[@for="Color.AliceBlue"]/*' />
/// <devdoc>
/// <para>[To be supplied.]</para>
/// </devdoc>
public static Color AliceBlue {
get {
return new Color(KnownColor.AliceBlue);
}
}
自定义类的示例:
public class foo
{
public int a;
public foo(int _a){a = _a;}
public static foo preset1{ get{ return new foo(1); }}
public static int getPreset1AsInt{ get{ return foo.preset1.a; }}
public static foo preset2{ get{ return new foo(2); }}//this doesn't have to be New it can be a private static field!
public static foo preset3{ get{ return new foo(3); }}
}
或者你知道你想做什么。这段代码很草率,但我希望你能得到这个想法