[C#.NET][VB.NET][Winform][User Control] 自訂控制項的自訂集合屬性 /User Control of Custom Collection Properties
上篇已介紹過字串集合屬性[C#.NET][VB.NET] 自訂控制項的集合屬性 /User Control of Collection Properties
但集合裡只有一個欄位是無法滿足我們的,接下來將介紹如何使用自訂集合
首先建立一個新的使用者控制項後加入一個類別
C#
VB
接著建立集合屬性\
C#
VB
接著按下F5就可以觀察自己剛剛寫的集合屬性了
接著我們在方案裡加入一個Winform專案,並把剛剛的自訂控制項加入Fomr理;這裡我們我們一樣是要觀察集合屬性,來看看VS幫我們生出什麼Code
C#
VB
真的很棒!!!該有的東西都生出來了。
另外還有一點要特別注意,用自動屬性的寫法處理集合屬性,不知道為什麼用自動屬性VS不鳥我。寫法如下:
接著在回到WInform專案,跟前面一樣的步驟加入欄位,我發現加完之後VS不會幫我加Code,所以下次再打開的時候資料還是空的。
不禁想起Bill叔跟我說過,他曾吃過自動屬性的虧,要我盡量別用,當時我心想「應該不會吧!好歹這也是MS的東西阿」,非要自己遇到才知道真的有這麼一回事,不知道有哪位可以跟我講為什麼使用自動屬性會這樣?是我哪裡用錯了嗎?
範例下載
CS_UserControl_Custom_Collection.zip
VB_UserControl_Custom_Collection.zip
2011/12/26
補充:
不能使用自動屬性的原因:
1.因為由VS自動產生的程式碼裡,List<Customer>未被初始化,所以使用自動屬性時,可以在建構式裡初始化
public UserControl1()
{
InitializeComponent();
CustomCollection = new List();
}
2.若不想由VS自動產生程式碼,也可以在屬性上定義Attribute
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET