私は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 { }
}
}
これは動作しますが、私はそれがベストプラクティスかどうかはわかりません。私が必要とするものを達成するための従来の方法はありますか?
私の例でエラーを修正しました(私は自分のコードから直接コピーしていないので、無効なコンストラクタ名です)。 –