UserControl 繼承自 Control,已擁有 Text 屬性。直接定義 public string Text { get; set; } 會導致隱藏繼承成員警告(CS0108)。加 override 則報錯,因基類 Text 非 virtual。
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text {
get { return base.Text; }
set { base.Text = value; }
}
關鍵點:
override 無效,需用 new 隱藏:public new string Text。new 會導致設計器不識別。解決:不重新聲明,直接使用基類 Text,並在構造函數設置 this.Text = "初始值"。OnTextChanged:
protected override void OnTextChanged(EventArgs e) {
base.OnTextChanged(e);
internalLabel.Text = this.Text; // 同步
}