隐藏自定义控件的元素和类别

时间:2011-01-18 23:41:55

标签: c# custom-controls componentmodel

我有一个问题。是否可以隐藏基本控件的某些元素和类别(用于自定义控件)。我只希望显示我定义的属性。谢谢你的时间。

2 个答案:

答案 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

它仍然有效。你无能为力(没有从不同的基类派生)。