2012-03-28 4 views
1

Возможно ли в пользовательском элементе C# переопределить атрибут, применяемый к свойству, без переопределения свойства?C# Переопределить атрибут DefaultValue?

Скажите, например, что вы хотите свойство, которое, как унаследованное, имеет атрибут «Browsable (true)», но для вашего управления вы хотите «Browsable (false)». Вам нужно переопределить свойство самостоятельно или вы можете что-то сделать с помощью, возможно, TypeDescriptor?

Если свойство не является виртуальным, переопределение невозможно, и, хотя использование «нового» возможно, вы не можете получить доступ к свойству со ссылкой на базовый класс (например, «Контроль»).

ie. Простой пример изменения по умолчанию для 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; 

Спасибо, Росс

ответ

0

нет, вы не можете сделать это без переопределения. Если свойство не является виртуальным, вы обречены.

Смежные вопросы