Joa*_*nge 16 .net c# gdi+ winforms
我得到的值正确显示使用:
[DefaultValue ( typeof ( Color ), "255, 0, 0" )]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
Run Code Online (Sandbox Code Playgroud)
但是在我重新加载项目后使用了控件,这个值被设置为White,我可以调用Reset来再次回到Red,但是我不明白这个问题.
除非我从默认值手动更改值,否则您应该如何设置默认值并确保保留默认值?
实际上我也这样做,它将Back和ForeColor设置为这些值,VS属性编辑器将它们显示为从默认值更改它们.
这是错的吗?
public CoolGroupBox ( )
{
InitializeComponent ( );
base.BackColor = Color.FromArgb ( 5, 5, 5 );
base.ForeColor = Color.FromArgb ( 0, 0, 0 );
}
Run Code Online (Sandbox Code Playgroud)
JDu*_*ley 21
诀窍是使用颜色的Hex代码:
[DefaultValue(typeof(Color), "0xFF0000")]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
Run Code Online (Sandbox Code Playgroud)
我想你也可以使用"255,0,0",但我不确定,并且通常使用命名颜色或十六进制代码.
将私有成员变量设置为您想要的默认颜色怎么样?
private Color lineColor = Color.Red;
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
Run Code Online (Sandbox Code Playgroud)
如果你想保留它,只需取出set访问器.
编辑
我明白了,您希望设计器中的属性列表显示默认颜色.
您必须覆盖基本控件的BackColor属性,为新属性添加新的DefaultValueAttribute ,然后在构造函数或InitializeComponent()方法(在designer.cs文件中)实际设置默认颜色,这可能是更好,因为这是为设计师.
public partial class RedBackgroundControl : UserControl
{
public RedBackgroundControl()
{
InitializeComponent();
base.BackColor = Color.Red;
}
[DefaultValue(typeof(Color), "Red")]
new public Color BackColor
{
get
{
return base.BackColor;
}
set
{
base.BackColor = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)