나는 ToolStripLabel에서 상속하는 것을 시도하고있다 :생성자에서 컨트롤 속성을 설정하는 방법 (디자이너 문제)
public class SeparatorLabel : ToolStripLabel
{
public SeparatorLabel() : base()
{
Margin = new Padding(5, 0, 5, 0);
Text = "ABC";
}
}
을 그러나, 나는 형태에 이러한 컨트롤을 배치하는 경우는 Text
속성은에서 가져온 것입니다 디자이너의 속성 표에 입력 된 값.
속성 그리드의 속성 (양식 InitializeComponent()
)이 설정되기 전에 내 생성자가 호출되어 내 값이 덮어 쓰여지므로 이는 물론 예상됩니다.
질문은 - 무엇입니까? 기존 컨트롤에서 상속 할 때 이러한 동작을 달성하기위한 표준 연습은 무엇입니까?
나는 그것이 빈 세터를 포함하도록 Text
속성을 재정의 할 수 있었고, 내가 컨트롤의 Text
를 업데이트 할 때, 내가 수동으로 base.Text
을 설정 구현 않았다 방법 :
public class SeparatorLabel : ToolStripLabel
{
public SeparatorLabel() : base()
{
Margin = new Padding(5, 0, 5, 0);
base.Text = "ABC";
}
[Browsable(false)]
public override string Text
{
get
{
return base.Text;
}
set { }
}
}
이 작동하지만 나는 그것이 최선의 방법인지 확실하지 않습니다. 내가 필요로하는 것을 달성하기위한 더 일반적인 방법이 있습니까?
내 예제에서 오류를 바로 잡았습니다 (코드에서 직접 복사하지 않았기 때문에 유효하지 않은 생성자 이름). –