簡體   English   中英

如何在C#中訪問usercontrol的屬性

[英]How to access properties of a usercontrol in C#

我用一個文本框和一個richtextbox創建了一個C#usercontrol。

如何從usercontrol外部訪問richtextbox的屬性。

例如..如果我把它放在一個表單中,我怎么能使用richtextbox的文本屬性???

謝謝

最干凈的方法是將所需的屬性公開為usercontrol的屬性,例如:

class MyUserControl
{
  // expose the Text of the richtext control (read-only)
  public string TextOfRichTextBox
  {
    get { return richTextBox.Text; }
  }
  // expose the Checked Property of a checkbox (read/write)
  public bool CheckBoxProperty
  {
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; }
  }


  //...
}

通過這種方式,您可以控制要公開的屬性以及它們是讀/寫還是只讀。 (當然,你應該根據屬性使用更好的名稱)。

這種方法的另一個優點是它隱藏了用戶控件的內部實現。 如果您想要將您的richtext控件與另一個控件進行交換,則不會破壞控件的調用者/用戶。

將屬性網格中RichTextBox的訪問修飾符(“修飾符”)更改為Public。

像這樣添加屬性到usercontrol

public string TextBoxText
{
    get
    {
        return textBox1.Text;
    }
    set
    {
        textBox1.Text = value;
    }
}

我最近在使用自定義類時遇到了一些問題:

用戶控件具有自定義類類型的公共屬性。 默認情況下,設計器會嘗試為其指定一些值,因此在設計器代碼中,將自動添加userControlThing.CustomClassProperty = null行。

目的是在運行程序時能夠在任何時刻為用戶控件提供自定義類(以更改用戶可見的值)。 因為set {}部分沒有檢查空值,所以會出現各種錯誤。

解決方案是將屬性更改為私有屬性,並使用兩個公共方法來設置和獲取值。 設計者將嘗試自動分配屬性,但僅留下方法。

您需要為richtextbox創建一個公共屬性,或者公開一些其他屬性來完成設置richtextbox文本的工作,如:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM