我与自定义属性的用户控制,如下所示:用户控制的定制属性丢失状态时用户控制重建
[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”,这不是默认值。
如何防止自定义属性丢失/改变控件重建时的状态?
我尝试了上面,并设置“this.removeButton.Visible =真”在用户控件的构造函数。最初它似乎保持其状态。没有改变的重建不会改变属性值。但是,当我对用户控件进行了更改并重新构建时,该属性又切换为“false”并变得粗体。这很烦人。 – Elan 2011-04-13 15:01:30
@Elan:然后你的代码中必须有一些东西在改变它的值。我创建了一些可重用的控件库和用户控件,但我从来没有遇到过这个问题。在代码中进行搜索以查看是否有任何设置'removeButton.Visible'属性。它可能隐藏在'* .Designer.cs'文件中,它被自动插入并且看不到它。 – 2011-04-14 05:00:45
用户控件在构造函数中将属性设置为“true”。主窗体的designer.cs是将“ShowRemoveButton”属性生成为false的代码。这是唯一的两个地方。我在用户控件的属性声明中删除了[DefaultValue(true)]属性,希望将主窗体上的属性设置为“true”会导致值停滞。然而,当designer.cs类被重新生成并被替换为“false”时,属性值“true”会丢失。我无法获得“真实”的价值。这发生在一些表单设计者更改和重建之后。 – Elan 2011-04-14 16:12:06