如何快速掌握VB.NET控件數(shù)組
本人很喜歡VB.NET控件數(shù)組,在工作中也很喜歡總結(jié)關(guān)于VB.NET控件數(shù)組的經(jīng)驗(yàn)教訓(xùn),下面就這個(gè)問(wèn)題來(lái)詳細(xì)說(shuō)說(shuō)吧。
一、關(guān)于VB.NET控件數(shù)組
控件數(shù)組”是VB6中一項(xiàng)簡(jiǎn)單而實(shí)用的技術(shù),通過(guò)對(duì)控件的簡(jiǎn)單拷貝、復(fù)制,開發(fā)者可以指定一組控件,這些控件具有相同的類型和名稱,共享事件集。使用控件數(shù)組可以:
1、允許多個(gè)控件共享同一個(gè)事件句柄;
2、提供了運(yùn)行期間增加一個(gè)控件的機(jī)制;
3、提供了一種方便的組合控件的方法。
VB.NET控件數(shù)組的創(chuàng)建不再通過(guò)VB6中設(shè)計(jì)時(shí)對(duì)控件的簡(jiǎn)單拷貝、復(fù)制而實(shí)現(xiàn)。VB .NET 的事件模型允許任何事件處理程序處理來(lái)自多個(gè)控件的事件,這使我們能夠編程創(chuàng)建屬于不同類型但共享相同事件的控件組。
二、創(chuàng)建VB.NET控件數(shù)組
下面我們創(chuàng)建一個(gè)Button類型控件數(shù)組:
1、創(chuàng)建“Windows應(yīng)用程序”類型的工程,添加名為ButtonArray的類,并使該類繼承 System.Collection.CollectionBase 類。System.Collections.CollectionBase類是.NET框架類庫(kù)中為集合操作提供抽象的基類,通過(guò)對(duì)它的繼承可以為我們的 ButtonArray類具備集合增加、刪除、索引的功能。
2、為ButtonArray類添加ParentForm屬性,即控件組所在窗體,創(chuàng)建初始化函數(shù)(構(gòu)造函數(shù));
3、為控件數(shù)組類增加AddItem方法,該方法在控件數(shù)組類中添加成員;
4、為控件數(shù)組類增加RemoveItem方法,該方法在控件數(shù)組中刪除一個(gè)成員。
- Public Class ButtonArray
- Inherits System.Collections.CollectionBase
- Private ReadOnly ParentForm As System.Windows.Forms.Form
- Public Sub New(ByVal pForm As System.Windows.Forms.Form)
- ParentForm = pForm
- End Sub
- Default Public ReadOnly Property Item(ByVal index As Integer)
As System.Windows.Forms.Button- Get
- Return Me.List.Item(index)
- 'ButtonArray的List 屬性從CollectionBase 繼承
- End Get
- End Property
- Public Sub AddItem()
- Dim btnItem As New System.Windows.Forms.Button()
- Me.List.Add(btnItem)
- ParentForm.Controls.Add(btnItem)
- '向窗體中增加控件
- btnItem.Tag = Me.Count'Count屬性從CollectionBase 繼承
- btnItem.Top = Me.Count * 30
- btnItem.Left = 200
- btnItem.Text = "Button" & Me.Count.ToString
- AddHandler btnItem.Click, AddressOf btnItem_Click
- '綁定事件處理程序
- End Sub
- Public Sub RemoveItem()
- If Me.Count > 0 Then
- ParentForm.Controls.Remove(Me(Me.Count - 1))
- Me.List.RemoveAt(Me.Count - 1)
- End If
- End Sub
- Public Sub btnItem_Click(ByVal sender As Object,
ByVal e As System.EventArgs)- '在這里編寫控件數(shù)組對(duì)點(diǎn)擊事件的響應(yīng)
- '例如:
- MsgBox("點(diǎn)擊:" & sender.GetType().ToString &
CType(CType(sender, Button).Tag, String))- End Sub
- End Class
【編輯推薦】