1
是否有可能在C#用户控件中覆盖应用于属性的属性,而不必覆盖该属性?例如,您想要一个属性,该继承的属性具有“Browsable(true)”属性,但对于您的控件而言,您希望“Browsable(false)”。你是否必须重写属性本身,或者你可以用TypeDescriptor做些什么?C#覆盖DefaultValue属性?
如果该属性不是虚拟的,覆盖是不可能的,并且在使用“new”的情况下是可能的,然后您不能通过引用基类来访问该属性(如“Control”)。
即。在文本框控件上更改ScrollBars默认值的简单示例。
public partial class MyTextBox : TextBox
{
public MyTextBox()
{
this.ScrollBars = ScrollBars.Vertical;
}
[DefaultValue(typeof(ScrollBars),"Vertical")]
public ScrollBars ScrollBars
{
get { return base.ScrollBars; }
set { base.ScrollBars = value; }
}
}
// this doesn't go via property setter as not overridden
TextBox textbox = new MyTextBox();
textbox.ScrollBars = ScrollBars.None;
感谢, 罗斯