2012-03-28 2 views
1

C# 사용자 정의 컨트롤에서 속성을 재정의 할 필요없이 속성에 적용된 특성을 재정의 할 수 있습니까?C# DefaultValue 특성을 재정의 하시겠습니까?

예를 들어 상속 된 "Browsable (true)"특성을 가진 속성을 원하지만 사용자가 원하는대로 "Browsable (false)"속성을 원한다고 가정 해보십시오. 속성 자체를 재정의해야합니까, 아니면 TypeDescriptor로 뭔가 할 수 있습니까?

속성이 가상이 아닌 경우 재정의가 가능하지 않으며 "new"를 사용할 수 있지만 "제어"와 같은 기본 클래스에 대한 참조로 속성에 액세스 할 수 없습니다.

즉. 텍스트 상자 컨트롤의 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

없이, 당신은 무시하지 않고 그것을 할 수 없습니다. 속성이 가상이 아니라면 - 운명을 저 지르게됩니다.

관련 문제