我有一个问题。是否可以隐藏基本控件的某些元素和类别(用于自定义控件)。我只希望显示我定义的属性。谢谢你的时间。
答案 0 :(得分:1)
隐藏属性并添加[Browsable(false)]
。
例如:
[Browsable(false)]
public new SomeType SomeProperty {
get { return base.SomeProperty; }
set { base.SomeProperty = value; }
}
答案 1 :(得分:0)
您可以使用[Browsable(false)]
自定义属性来阻止该属性出现在WinForms属性编辑器中:
[Browsable(false)]
public new PropertyType PropertyName
{
get { return base.PropertyName; }
set { base.PropertyName = value; }
}
然而,这将使该属性仍然有效,它只是不会出现在表单设计器中。编译器很乐意接受它。如果您希望该属性实际停止工作,则抛出异常:
[Browsable(false)]
public new PropertyType PropertyName
{
get { throw new InvalidOperationException("This property cannot be used with this control."); }
set { throw new InvalidOperationException("This property cannot be used with this control."); }
}
当然,编译器仍然高兴地接受它,但它会在运行时抛出。然而,即便如此,客户端程序员仍然可以通过转换为基本类型来访问“原始”属性,即代替
myControl.PropertyName
他们可以写
((BaseControlType) myControl).PropertyName
它仍然有效。你无能为力(没有从不同的基类派生)。