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

C# 是否可以创建仅可在设计时设置的自定义控件属性?,c#,winforms,C#,Winforms,可能重复: 我想创建一个只能在设计时设置的自定义控件属性,是否可行?是。。。在类中,创建一个私有字段,以标识属性最初是否已“设置”。然后使用标准属性getter和setter。但是,在setter中,使用许可证管理器检测您在哪种模式下操作。。。设计时间与运行时。然后检查。如果在设计时,或字段尚未设置,则始终允许。输入后,将标志设置为正在设置。这是必需的,因为在表单设计器实例化控件的过程中,必须从.designer.cs代码中至少设置一次,但在此之后,忽略任何更改它的尝试--通过设置标志

可能重复:


我想创建一个只能在设计时设置的自定义控件属性,是否可行?

是。。。在类中,创建一个私有字段,以标识属性最初是否已“设置”。然后使用标准属性getter和setter。但是,在setter中,使用许可证管理器检测您在哪种模式下操作。。。设计时间与运行时。然后检查。如果在设计时,或字段尚未设置,则始终允许。输入后,将标志设置为正在设置。这是必需的,因为在表单设计器实例化控件的过程中,必须从.designer.cs代码中至少设置一次,但在此之后,忽略任何更改它的尝试--通过设置标志

    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”标志是私有的,不受保护,无法让子继承进行修改。您必须清除该标志,然后重置为属性要保留的新字符串(或任何值)

谢谢似乎是同一个问题,请阅读本文。谢谢您提供的代码片段,这将使我更轻松!