首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# UserControl 重寫 Text 屬性不顯示在屬性窗口的解決方案

     編輯:程式設計綜合問答

現象與原因

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; }
}

關鍵點:

  1. override 無效,需用 new 隱藏:public new string Text。
  2. 但 new 會導致設計器不識別。解決:不重新聲明,直接使用基類 Text,並在構造函數設置 this.Text = "初始值"。
  3. 若需自定義行為(如同步到內部 Label),重寫 OnTextChanged:
    protected override void OnTextChanged(EventArgs e) {
        base.OnTextChanged(e);
        internalLabel.Text = this.Text; // 同步
    }
    

驗證步驟

  1. 重新生成解決方案 (Ctrl+Shift+B)。
  2. 關閉設計器,重新打開窗體設計視圖。
  3. 屬性窗口搜索 "Text" 確認可見。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved