2010-02-05 64 views
3

希望我說得對。我有一個WinForm(3.5)應用程序,它有一個窗體分成兩個區域。 1是導航,另一個是面板,是內容。您在「導航部分」(即「人口統計」)中選擇所需內容,然後在面板中嵌入一個包含所有人口統計數據控件的UserControl。用戶控件的控件應該由屬性支持嗎?

我在問的是,如果每個用戶控件應該有一個Property其上每個Control。例如:ucDemographics有一個文本框,名爲txtCity。是否應該有Property存儲valuetxtCity並允許我的表單和其他用戶控件訪問它?

這是普遍接受的「最佳實踐」嗎?

如果不是,那是什麼?

回答

5

這取決於你想用你的UserControl實現什麼。

通常你不會公開txtCity,因爲調用者可以操縱關於文本框的所有東西。在大多數情況下,您只會暴露當前文字ála

public string CityText 
{ 
    get { return this.txtCity.Text; } 
} 
+0

我明白了,所以通常你只會使用Get,而不是Set或者不是公共集合?這樣用戶控件本身可以用它來設置變量。我錯過了這一點嗎? – 2010-02-05 16:25:47

+0

取決於您的UserControl的用途。如果您希望允許主持人窗體更新文本,則公開一個公共集合,否則不要。 – 2010-02-05 16:41:04

2

不,這不是最佳做法。用戶控件的意圖是用自己的行爲組成一個新的控件。您最多應該擁有「多個」屬性,方法和事件,這些屬性,方法和事件是公開的,並允許表單與新控件進行交互。如果您發現使用它的唯一好方法是通過暴露其組成控件,您最好不要使用UserControl,而只需將控件直接放在窗體上。