繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM