![](/img/trans.png)
[英]Change Property Attribute Like ReadOnly at Design-Time (PropertyGrid)
[英]PropertyGrid - how to add ability to reset property of collection type in design-time
我正在开发控件。 控件具有Collection类型的属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
TimeRuleCollection TimeRules { get { return timeRules; } }
是否可以允许用户在设计时通过属性网格重置属性?
重置方法:
void ResetWorkTimeRules() {
TimeRules.Clear();
}
没有任何作用。 “重置”操作被禁用。
是否可以通过这种方式重置只读属性?
有可能,但是财产必须是公共的,并且您必须提供(甚至是假的)公共财产设定者:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TimeRuleCollection TimeRules
{
get { return timeRules; }
set { throw new NotSupportedException(); }
}
下一个要求是使方法void {PropertyName}Reset()
(可以具有任何可访问性,通常是private
):
private void ResetTimeRules()
{
timeRules.Clear();
}
(可选)您可以通过实现bool ShouldSerialize{PropertyName}()
方法来控制bool ShouldSerialize{PropertyName}()
用Reset
命令。
private bool ShouldSerializeTimeRules()
{
return timeRules.Count > 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.