下面是教大家如何在VB.NET裡使用控制項陣列
我以Label類為例
第一步:在自己所需要的作用域定義Label類型的陣列,這裡定義還沒有用.
private Labs(9) as Label
第二步:初始化.一般使用迴圈
dim i as Integer
For i = Labs.GetLowerBound(0) To Labs.GetUpperBound(0)
labs(i).text="這裡是標籤" & i
labs(i).autosize=false
labs(i).size=labs(i).PreferredSize
...
AddHandler labs(i).Click, AddressOf labs_Click '這是能使用事件的關鍵
controls.add(labs(i)) '添加到當前容器
next i
還可在迴圈裡設定你所需的設置,如標籤的字體了,大小,顏色等等.
第三步:事件處理.就是什麼按一下,按兩下等等,這是以按一下為例,和上文紅色部分有關
還記得上面寫的AddHandler labs(i).Click, AddressOf labs_Click吧.
裡面的labs_Click其實就是自己編寫的處理Click事件的過程.
Private Sub labs_Click(ByVal sender As Object, ByVal e As EventArgs)
dim LabTemp as new label
Labtemp = CType(sender, Label) '這裡用CType就是將觸發事件的物件還原為Label物件
'Labtemp就是觸發事件的物件
end sub
下面是一個完整的例子,VB2005 下完成
Public Class Form1
Dim labs(9) As Label
Private Sub T_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
For i = labs.GetLowerBound(0) To labs.GetUpperBound(0)
labs(i) = New Label
labs(i).Text = "我是" & i & "號標籤"
labs(i).AutoSize = False
labs(i).Size = labs(i).PreferredSize
labs(i).Top = i * (labs(i).Height + 10)
AddHandler labs(i).Click, AddressOf labs_Click
Me.Controls.Add(labs(i))
Next
End Sub
Private Sub labs_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim LabTemp As New Label
LabTemp = CType(sender, Label)
Me.Text = "剛剛按一下" & LabTemp.Text
LabTemp = Nothing
End Sub
End Class |