【问题标题】:How do I hide some of the default control properties at design-time (C#)?如何在设计时 (C#) 隐藏一些默认控件属性?
【发布时间】:2010-10-11 13:49:02
【问题描述】:

我制作了一个自定义控件。它继承自System.Windows.Forms.Control,并具有我添加的几个新属性。是否可以显示我的属性(例如 TextOn 和 TextOff)而不是默认的“Text”属性。

我的控件工作正常,我只是想整理一下属性窗口。

【问题讨论】:

    标签: c# .net winforms user-controls


    【解决方案1】:

    使用 System.ComponentModel;

    [Browsable(false), DesignerSerializationVisibility(
                                DesignerSerializationVisibility.Hidden)]
    public int MyHiddenProp {get; set; }
    

    以这种方式为我工作,它不会出现在设计器属性中,并且设计器不会初始化该属性,这将覆盖我自己的初始化......

    【讨论】:

      【解决方案2】:

      您可以覆盖它们(如果它们可以被覆盖)并应用 Browsable 属性,指定 false,或者创建属性的新版本并应用相同的属性(第二种方法并不总是出现工作如此YMMV)。

      此外,您可以为您的类型使用自定义 TypeConverter 并覆盖 GetProperties 方法来控制为您的类型显示哪些属性。这种方法对底层基类的变化更加稳健,但可能需要更多的努力,具体取决于您想要实现的目标。

      我经常结合使用Browsable 属性和自定义TypeConverter

      【讨论】:

      • 谢谢,Browsable 帮我搞定了。
      • 没问题。总是乐于提供帮助。
      【解决方案3】:

      覆盖属性并添加[Browsable(false)]

      您可能还想添加[EditorBrowsable(EditorBrowsableState.Never)],这将在代码编辑器的 IntelliSense 中隐藏该属性。请注意,它只会隐藏在与原始控件不同的解决方案中。

      【讨论】:

        【解决方案4】:

        您正在寻找design-time attributes,特别是BrowsableAttribute. DefaultPropertyAttribute 设置要编辑的默认属性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-16
          • 1970-01-01
          相关资源
          最近更新 更多