【问题标题】:Is it possible to create a custom control property only settable at design time? [duplicate]是否可以创建仅在设计时可设置的自定义控件属性? [复制]
【发布时间】:2010-12-07 14:51:13
【问题描述】:

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

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

【问题讨论】:

  • 谢谢 似乎是同样的问题会读这篇文章。

标签: c# winforms


【解决方案1】:

是的...在您的班级中,创建一个私有字段来确定您的属性是否最初已“设置”。然后让您的标准属性获取器和设置器。但是,在设置器中,使用许可证管理器来检测您在哪种模式下运行...设计时与运行时。然后检查。如果在设计时始终允许,或者如果该字段尚未设置。一旦进入,然后将标志设置为已设置。这将是必需的,因为在表单设计器实例化控件期间,必须从 .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”标志是私有的,而不是受保护的子继承。您必须清除标志,然后重置为您的属性要保存的新字符串(或任何值)

【讨论】:

  • 感谢代码 sn-p,这对我来说会容易得多!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
相关资源
最近更新 更多