InPowerS.Net

 找回密碼
 註冊
搜索
查看: 3500|回復: 0

[轉貼]VB.NET 控制項陣列

[複製鏈接]
發表於 2008-12-25 02:42:44 | 顯示全部樓層 |閱讀模式
下面是教大家如何在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
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

小黑屋|Archiver|手機版|InPowerS.Net

GMT+8, 2018-12-20 00:00

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表