如何设置自定义控件的默认属性,即首次将它们拖到Designer中的表单上时?
无法在此处或通过Google找到答案;我得到的就是如何限制价值观。
使用宽度和宽度高度作为示例,如果我在构造函数中设置它们,则每次打开Designer时它们都会应用于控件。如何将它们设置为默认值,在用户更改属性后永远不会再次应用它?
答案 0 :(得分:6)
尝试使用DefaultValue属性。
private int height;
[DefaultValue(50)]
public int Height
{
get
{
return height;
}
set
{
height=value;
}
}
答案 1 :(得分:2)
对于我无法覆盖的属性,使用new
运算符对我有用。例如,MultiSelect
控件上的ListView
属性。我希望MultiSelect
默认为false
,但我仍然希望能够更改它。
如果我只是在构造函数或false
中将其设置为InitializeComponent
,问题(我认为)是默认值仍然是true
,所以如果我设置了设计器中的值为true
,设计人员注意到true
是默认值,因此根本不设置属性,而不是将其显式设置为它认为已经是默认值的属性。但是这个值最后变成false
,因为这是构造函数中设置的。
为了解决这个问题,我使用了以下代码:
/// <summary>Custom ListView.</summary>
public sealed partial class DetailsListView : ListView
{
...
[DefaultValue(false)]
public new bool MultiSelect {
get { return base.MultiSelect; }
set { base.MultiSelect = value; }
}
这使控件仍然具有默认为MultiSelect
而不是false
的正常true
属性,并且仍然可以在新控件上切换属性。
答案 2 :(得分:-1)
在构造函数中,设置将其拖动到画布上时要显示的属性的值。 或者,如果它们是基本控件的内置属性,则将它们设置在设计器代码类中。
答案 3 :(得分:-1)
以下将允许您在显示表单时添加值,之后您可以根据需要进行设置。
private int widthLength = 5;
public int Width {
get { return widthLength ; }
set { widthLength = value;
}