我有自制的自定义控件。它继承自System.Windows.Forms.Control
,并且添加了几个新属性。是否可以显示我的属性(例如TextOn和TextOff)而不是默认的“Text”属性。
我的控制工作正常,我只想解除属性窗口的杂乱。
答案 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设置要编辑的默认属性。