2015-10-06 67 views
1

enter image description here編輯控件 - C#的WinForms

我試圖改變自定義控件的文本框的背景顏色(定製控件的名稱是「TC1」和文本框的名字是「txtb」)通過單擊不在自定義控件中的「更改」按鈕。我應該如何解決這個問題?

感謝, 韋恩Scicluna

+0

如果您對自定義控件的源代碼有控制權,請爲其提供公共屬性以更改該顏色,因爲它可以訪問其子控件。 –

回答

1

選項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; 
+1

使TextBox公開中斷封裝。最好在自定義控件上提供一個新的屬性。 –

+0

@EricJ。總的來說,我同意你的看法,但有時候你有一些權衡,你更願意公開控制權。 –

+0

所以通過暴露控制我基本上可以編輯該控件的所有屬性。我對嗎? –

1

既然你正在建設一個用戶控制,改變文本框的顏色可以被視爲控制的功能,並可以提供通過添加一個屬性給客戶。

[Browsable(true)] // allows you to change it in the designer 
public Color TextBoxBackColor 
{ 
    get { return txtb.BackColor; } 
    set { txtb.BackColor = value; } 
} 
+0

默認情況下,該公共屬性是'Browsable'。 –