我試圖改變自定義控件的文本框的背景顏色(定製控件的名稱是「TC1」和文本框的名字是「txtb」)通過單擊不在自定義控件中的「更改」按鈕。我應該如何解決這個問題?
感謝, 韋恩Scicluna
我試圖改變自定義控件的文本框的背景顏色(定製控件的名稱是「TC1」和文本框的名字是「txtb」)通過單擊不在自定義控件中的「更改」按鈕。我應該如何解決這個問題?
感謝, 韋恩Scicluna
選項1:
你可以讓你TextBox
公開。要這樣做,請轉到您的用戶控件的設計器,然後選擇Modifier
屬性並將該值設置爲公共。
現在你可以在你的控制之外訪問它。例如,如果您有與userControl1
和名稱的文本框的用戶控件的一個實例是txtb
:
userControl1.txtb.BackColor = Color.Red;
選項2:
作爲另一個選項,您可以創建一個公共財產,在該屬性獲取或設置您的文本框的顏色。
public Color TextBoxBackColor
{
get
{
return txtb.BackColor;
}
set
{
txtb.BackColor = value;
}
}
現在您可以在您的控制之外訪問此屬性。例如,如果您有與userControl1
名用戶控件的實例:
userControl1.TextBoxBackColor = Color.Red;
使TextBox公開中斷封裝。最好在自定義控件上提供一個新的屬性。 –
@EricJ。總的來說,我同意你的看法,但有時候你有一些權衡,你更願意公開控制權。 –
所以通過暴露控制我基本上可以編輯該控件的所有屬性。我對嗎? –
既然你正在建設一個用戶控制,改變文本框的顏色可以被視爲控制的功能,並可以提供通過添加一個屬性給客戶。
[Browsable(true)] // allows you to change it in the designer
public Color TextBoxBackColor
{
get { return txtb.BackColor; }
set { txtb.BackColor = value; }
}
默認情況下,該公共屬性是'Browsable'。 –
如果您對自定義控件的源代碼有控制權,請爲其提供公共屬性以更改該顏色,因爲它可以訪問其子控件。 –