在VB.Net中创建使用控件数组
时间:2007-12-28 15:23:27 来源: 作者:
AD
首先创建一个Button类型/com/">控件数组:
1、创建“Windows应用/doc/">程序”类型的工程,添加名为ButtonArray的类,并使该类继承 System.Collection.CollectionBase 类。System.Collections.CollectionBase类是.NET框架类库中为集合操作提供抽象的基类,通过对它的继承可以为我们的ButtonArray类具备集合增加、删除、索引的功能。
2、为ButtonArray类添加ParentForm属性,即/com/">控件组所在窗体,创建初始化函数(构造函数);
3、为/com/">控件数组类增加AddItem方法,该方法在/com/">控件数组类中添加成员;
4、为/com/">控件数组类增加RemoveItem方法,该方法在/com/">控件数组中删除一个成员。
示例代码:
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 字串8
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) ''向窗体中增加/com/">控件
btnItem.Tag = Me.Count ''Count属性从CollectionBase 继承
字串6
btnItem.Top = Me.Count * 30
btnItem.Left = 200
btnItem.Text = "Button" & Me.Count.ToString
AddHandler btnItem.Click, AddressOf btnItem_Click ''绑定事件处理/doc/">程序
End Sub
Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Button)
Me.List.Add(btnItem)
AddHandler btnItem.Click, AddressOf btnItem_Click ''绑定事件处理/doc/">程序
End Sub
Public Sub RemoveItem()
If Me.Count > 0 Then
ParentForm.Controls.Remove(Me(Me.Count - 1)) 字串5
Me.List.RemoveAt(Me.Count - 1)
End If
End Sub
Public Sub btnItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
''在这里编写/com/">控件数组对点击事件的响应
''例如:
MsgBox("点击:" & sender.GetType().ToString & CType(CType(sender, Button).Tag, String))
End Sub
End Class
使用创建的/com/">控件数组
在Form1中放置两个按钮Button1、Button2,分别测试/com/">控件数组的增添、删除。
双击Form添加代码:
Public Class Form1
Inherits System.Windows.Forms.Form
字串8
……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
其他的/com/">控件数组也可以用类似的方式来实现
例如 Label/com/">控件数组
LabelArray.vb代码如下:
Public Class LabelArray
Inherits System.Collections.CollectionBase
Private ReadOnly ParentForm As System.Windows.Forms.Form
Public Sub New(ByVal pForm As System.Windows.Forms.Form) 字串9
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
Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Label)
Me.List.Add(btnItem)
AddHandler btnItem.Click, AddressOf btnItem_Click ''绑定事件处理/doc/">程序
End Sub
Public Sub btnItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) 字串7
''在这里编写/com/">控件数组对点击事件的响应
''例如:
MsgBox("点击:" & sender.GetType().ToString & CType(CType(sender, Label).Tag, String))
End Sub
End Class
使用创建的Label/com/">控件
在Form1中放置两个按钮Label1、Label2
双击Form添加代码:
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
''该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
''在 InitializeComponent() 调用之后添加任何初始化
字串1
''用来绑定label
BindArray()
End Sub
……Windows窗体设计器生成的其他代码……
#End Region
Dim Labels As New LabelArray(Me)
Public Sub BindArray()
Me.Label1.Tag = "1111"
Me.Label2.Tag = "222"
Labels.AddItem(Me.Label1)
Labels.AddItem(Me.Label2)
End Sub
End Class
然后可以测试点击两个label可以显示相应的Tag的信息。
字串6


文章评论
共有 0位编程爱好者发表了评论 查看完整内容