在VB.Net中創建使用控件數組 首先創建一個Button類型控件數組: 1、創建“Windows應用程序”類型的工程,添加名為ButtonArray的類,并使該類繼承 System.Collection.CollectionBase 類。System.Collections.CollectionBase類是.NET框架類庫中為集合操作提供抽象的基類,通過對它的繼承可以為我們的ButtonArray類具備集合增加、刪除、索引的功能。 2、為ButtonArray類添加ParentForm屬性,即控件組所在窗體,創建初始化函數(構造函數); 3、為控件數組類增加AddItem方法,該方法在控件數組類中添加成員; 4、為控件數組類增加RemoveItem方法,該方法在控件數組中刪除一個成員。
示例代碼: 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
Me.List.Add(btnItem) End Sub 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) '在這里編寫控件數組對點擊事件的響應 '例如: MsgBox("點擊:" & sender.GetType().ToString & CType(CType(sender, Button).Tag, String)) End Sub End Class
使用創建的控件數組 在Form1中放置兩個按鈕Button1、Button2,分別測試控件數組的增添、刪除。 雙擊Form添加代碼: Public Class Form1 Inherits System.Windows.Forms.Form
……Windows窗體設計器生成的代碼…… Dim Buttons As New ButtonArray(Me)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Buttons.AddItem() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Buttons.RemoveItem() End Sub End Class
LabelArray.vb代碼如下: 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.Label Get Return Me.List.Item(index) ' ButtonArray的List 屬性從CollectionBase 繼承 End Get End Property
Me.List.Add(btnItem) AddHandler btnItem.Click, AddressOf btnItem_Click '綁定事件處理程序 End Sub
'在這里編寫控件數組對點擊事件的響應 '例如: MsgBox("點擊:" & sender.GetType().ToString & CType(CType(sender, Label).Tag, String)) End Sub
雙擊Form添加代碼: Public Class Form1 Inherits System.Windows.Forms.Form
Public Sub New() '該調用是 Windows 窗體設計器所必需的。 '在 InitializeComponent() 調用之后添加任何初始化 End Sub #End Region 然后可以測試點擊兩個label可以顯示相應的Tag的信息。 |
溫馨提示:喜歡本站的話,請收藏一下本站!