如何在设计时隐藏一些默认控件属性(C#)?

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

我的控制工作正常,我只想解除属性窗口的混乱。

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

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

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

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

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

使用System.ComponentModel;

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

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

您正在寻找设计时属性 ,特别是BrowsableAttribute。 DefaultPropertyAttribute设置要编辑的默认属性。