是否可以创建仅在设计时可设置的自定义控件属性?

时间:2010-12-07 14:51:13

标签: c# winforms

  

可能重复:
  Can a C# control have a Design Time only property?

我想创建一个只能在设计时设置的自定义控件属性吗?

1 个答案:

答案 0 :(得分:2)

是...在您的班级中,创建一个私人字段,以确定您的媒体资源是否最初“设置”。然后有你的标准属性getter和setter。但是,在setter中,使用许可证管理器检测您在...设置时间与运行时间下运行的模式。然后检查。如果在设计时,则始终允许,或者如果尚未设置该字段。进入后,将标志设置为已设置。这将是必需的,因为在表单设计器实例化控件期间,它必须至少从.Designer.cs代码设置为ONCE,但在此之后,忽略任何更改它的尝试 - 通过设置标志。

    private Boolean IsCreated = false;

    private String myVar1;
    public String MyVar1
    {
       get { return myVar1; }
       set {
              if (LicenseManager.UsageMode ==  LicenseUsageMode.Designtime 
                    || !IsCreated)
              {
                  myVar1 = value;
                  IsCreated = true;
              }
    }

现在,您仍然可以允许更改,但是您必须通过在您的类中创建的自定义方法来执行此操作,因为“IsCreated”标志是PRIVATE而不是PROTECTED用于继承子进程。您必须清除该标志,然后重置为您的属性要保留的新字符串(或其他)值