我有一个具有自定义属性的用户控件,如下所示:
[DefaultValue(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Description("Gets or sets whether the \"Remove\" button is visible.")]
public bool ShowRemoveButton
{
get
{
return this.removeButton.Visible;
}
set
{
this.removeButton.Visible = value;
}
}
该控件包含一个标准按钮控件。该属性用于显示或隐藏按钮。用户控件构建在单独的项目程序集中。我将它放在一个表单上,我可以设置和取消设置上述属性,一切似乎都工作正常。但是,当重建包含用户控件的项目时,属性值将翻转为“false”,这不是默认值。
重建控件时如何防止自定义属性丢失/改变其状态?
问题是DefaultValueAttribute
只告诉designer该属性的默认值是什么。它控制属性是否显示在bold,以及当您右键单击该属性并从上下文菜单中选择“重置”时该值会重置为什么。
What it doesn'tdo 是在运行时将属性设置为特定值。为此,您需要将代码放置在用户控件的构造函数方法中。例如:
// set default visibility
this.removeButton.Visible = true;
否则,正如您所描述的,当您重建项目时,该属性的值将被重置。它将出现在bold在设计器的“属性”窗口中,因为它与默认值(如在DefaultValueAttribute
),但该属性不会更改值的设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)