我得到了正确显示的值:
[DefaultValue ( typeof ( Color ), "255, 0, 0" )]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
但是在我重新加载项目之后使用了控件,这个值被设置为White,我可以调用Reset来再次回到Red,但是我不明白这个问题。
除非我从默认值手动更改值,否则您应该如何设置默认值并确保保留默认值?
实际上我也这样做,它将Back和ForeColor设置为这些值,VS属性编辑器将它们显示为从默认值更改。
这是错的吗?
public CoolGroupBox ( )
{
InitializeComponent ( );
base.BackColor = Color.FromArgb ( 5, 5, 5 );
base.ForeColor = Color.FromArgb ( 0, 0, 0 );
}
答案 0 :(得分:19)
诀窍是使用颜色的Hex代码:
[DefaultValue(typeof(Color), "0xFF0000")]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
我认为您也可以使用“255,0,0”,但我不确定并且通常使用命名颜色或十六进制代码。
答案 1 :(得分:8)
如何将私有成员变量设置为您想要的默认颜色?
private Color lineColor = Color.Red;
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
如果您希望保留,只需取出设置的访问者。
修改
我知道,您希望设计器中的属性列表显示默认颜色。
您必须覆盖基本控件的BackColor属性,为 new 属性添加新的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;
}
}
}
答案 2 :(得分:4)
[DefaultValue(...)]
属性是设计人员和代码生成器的提示。它不是编译器的指令。
this KB article中的更多信息。
答案 3 :(得分:0)
我没有运气使用类型为DefaultValue
或类型为Color
的属性的Font
属性,但我确实成功使用了msdn文档中描述的这些方法:< / p>
“使用ShouldSerialize和Reset方法定义默认值” http://msdn.microsoft.com/en-us/library/53b8022e(v=vs.90).aspx
我分别使用Color.Empty
和null
作为我的私人支持字段的值,并且公共属性总是返回一些有用的东西。
答案 4 :(得分:0)
您可以在Initializecomponent方法的component.designer.cs中设置特定属性:
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.LineColor= System.Drawing.Color.FromArgb(255, 0, 0);
}
重建项目,所有内容也应显示在
中答案 5 :(得分:-1)
答案 6 :(得分:-1)
在DependencyProperty中使用UIPropertyMetadata
像:
public static DependencyProperty TrueColorProperty = DependencyProperty.Register(
"TrueColor", typeof (Color), typeof (LedControl), new UIPropertyMetadata(Colors.Red));