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

时间:2009-03-05 17:40:46

标签: c# .net winforms user-controls

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

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

4 个答案:

答案 0 :(得分:15)

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

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

我经常使用Browsable属性和自定义TypeConverter的组合。

答案 1 :(得分:6)

覆盖该媒体资源并添加[Browsable(false)]

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

答案 2 :(得分:4)

使用System.ComponentModel;

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

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

答案 3 :(得分:0)

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