[英]How to set the default value of Colors in a custom control in Winforms?
我得到了正確顯示的值:
[DefaultValue ( typeof ( Color ), "255, 0, 0" )]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
但是在我重新加載項目后使用控件,這個值設置為白色,我可以調用重置再次回到紅色,但我不明白問題所在。
你應該如何設置默認值並確保它被保留,除非我手動更改默認值?
實際上我也在這樣做,它將 Back 和 ForeColor 設置為這些值,並且 VS 屬性編輯器將它們顯示為好像它們是從默認值更改的一樣。
這是錯的嗎?
public CoolGroupBox ( )
{
InitializeComponent ( );
base.BackColor = Color.FromArgb ( 5, 5, 5 );
base.ForeColor = Color.FromArgb ( 0, 0, 0 );
}
訣竅是使用顏色的Hex代碼:
[DefaultValue(typeof(Color), "0xFF0000")]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
我想你也可以使用“255,0,0”,但我不確定,並且通常使用命名顏色或十六進制代碼。
將私有成員變量設置為您想要的默認顏色怎么樣?
private Color lineColor = Color.Red;
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
如果你想保留它,只需取出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;
}
}
}
[DefaultValue(...)]
屬性是設計者和代碼生成器的提示。 它不是編譯器的指令。
此知識庫文章中的更多信息。
我沒有運氣使用具有Color
類型或Font
類型屬性的DefaultValue
屬性,但我確實成功使用了msdn文檔中描述的這些方法:
“使用ShouldSerialize和Reset方法定義默認值” http://msdn.microsoft.com/en-us/library/53b8022e(v=vs.90).aspx
我分別使用Color.Empty
和null
作為我的私有支持字段的值,並且公共屬性總是返回一些有用的東西。
您可以在Initializecomponent方法的component.designer.cs中設置特定屬性:
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.LineColor= System.Drawing.Color.FromArgb(255, 0, 0);
}
重建項目,一切也應該出現在
我使用了這段代碼,它運行良好
Private _BackColorSelect As Color = Color.FromArgb(214, 234, 248)
<DefaultValue(GetType(Color), "214, 234, 248")>
Public Property BackColorSelect As Color
Get
Return _BackColorSelect
End Get
Set(value As Color)
_BackColorSelect = value
End Set
End Property
有相當多關於默認值屬性初始化的一篇文章在CodeProject
在DependencyProperty中使用UIPropertyMetadata
喜歡:
public static DependencyProperty TrueColorProperty = DependencyProperty.Register(
"TrueColor", typeof (Color), typeof (LedControl), new UIPropertyMetadata(Colors.Red));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.