【发布时间】:2012-03-28 15:03:52
【问题描述】:
是否可以在 C# 用户控件中覆盖应用于属性的属性,而不必覆盖该属性?
例如,假设您想要一个继承的属性,它具有“Browsable(true)”属性,但对于您的控件,您想要“Browsable(false)”。您是否必须覆盖属性本身,或者您可以使用 TypeDescriptor 做些什么?
如果属性不是虚拟的,则无法覆盖,并且虽然可以使用“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;
谢谢, 罗斯
【问题讨论】:
标签: c# user-controls overriding