[英]How to access properties that are in an Inherited UserControl in C#?
[英]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.