C#是否覆盖DefaultValue属性?

C#是否覆盖DefaultValue属性?,c#,user-controls,overriding,C#,User Controls,Overriding,在C#用户控件中,是否可以重写应用于属性的属性,而不必重写该属性 例如,您希望一个属性继承时具有“Browsable(true)”属性,但对于您的控件,您希望具有“Browsable(false)”属性。您是否必须重写属性本身,或者是否可以使用TypeDescriptor做些什么 如果属性不是虚拟的,则不可能进行重写,并且在使用“new”时,不能通过对基类(如“Control”)的引用来访问属性 例如,更改文本框控件上滚动条默认值的简单示例 public partial class MyText

在C#用户控件中,是否可以重写应用于属性的属性,而不必重写该属性

例如,您希望一个属性继承时具有“Browsable(true)”属性,但对于您的控件,您希望具有“Browsable(false)”属性。您是否必须重写属性本身,或者是否可以使用TypeDescriptor做些什么

如果属性不是虚拟的,则不可能进行重写,并且在使用“new”时,不能通过对基类(如“Control”)的引用来访问属性

例如,更改文本框控件上滚动条默认值的简单示例

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;
谢谢,
罗斯

不,你不能不重写。如果财产不是虚拟的,你就注定要失败