我有一个简单的UserControl包含一个最初为空的ComboBox。该CB的setter向其添加项目,getter返回所选项目。将此UC添加到表单时,设计人员会自动调用空的CB的getter。用项填充CB的方法稍后调用。我可以想到一两种方法可以通过代码中的“乱七八糟”来绕过这个问题。但在我开始之前,我想问你是否有办法阻止设计师调用getter方法。也许使用类似于Browsable或Bindable的属性? THX
答案 0 :(得分:1)
试试这个:
public ListBoxItem MyProperty
{
get
{
if (this.DesignMode)
{
return new ListBoxItem("empty");
}
else
{
return comboBox1.SelectedItems[0];
}
}
}
仍会调用getter,但您可以控制此处返回的内容。
或者,我认为将[Browsable (false)]
属性放在getter之上也可能有效,但我不确定。
答案 1 :(得分:1)
我不清楚这个吸气剂是什么样的。但是,您希望确保设计器不会序列化只应在运行时使用的属性。使用属性执行此操作:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public int SomeProperty {
//etc...
}