Looking on the web very few have got VB.net 2008/2010 using object arrays working.
I felt it was time to give back what I have taken from the web for any other users.
VB6 had a simple object array system which has been lost in VB.net
As a C#/ C++ programer I like dot.net but think "Basic" should be Basic!
I use VB.net for rapid Visual development and enjoy its ease in which you can come back to the code to re-read it.
OK you need a Label as an Array with Option Strict On..........
This demo places 64 labels 8x8 on a panel and changes back color when you click on it.
Open a new Form and place a Panel1 on the form size 600x400
Place a Lable on the top left corner of the panel. (Location 15,12)
I called it "Lbl_Master" set visible to false , Autosize false, TextAlign MiddleCenter,
BackColor Lime , Text 01 and Size 40,30
This acts as a Master for ease of your array start postion and other visual properties.
place a button (Button1) on the form.
Hope this helps all you VB coders..
Reagrds Dave
Enter This code for the Form1 as .................
Option Strict On
Imports System.Drawing
Public Class Form1
Public Lbl_Array As Label() = New Label(64) {} ' Set the number you labels need
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Demo places 8 x 8 (64) lables on form
Dim CNT As Integer
Dim X As Integer
Dim Y As Integer
Dim H As Integer
Dim W As Integer
Dim r, c As Integer
Y = Lbl_Master.Location.Y
H = Lbl_Master.Height
W = Lbl_Master.Width
CNT = 1
For c = 1 To 8
X = Lbl_Master.Location.X
For r = 1 To 8
Lbl_Array(CNT) = New Label
Lbl_Array(CNT).Location = New System.Drawing.Point(X, Y)
Lbl_Array(CNT).Size = New System.Drawing.Size(W, H)
Lbl_Array(CNT).AutoSize = Lbl_Master.AutoSize
Lbl_Array(CNT).BackColor = Lbl_Master.BackColor
Lbl_Array(CNT).BorderStyle = Lbl_Master.BorderStyle
Lbl_Array(CNT).TextAlign = Lbl_Master.TextAlign
Lbl_Array(CNT).ForeColor = Lbl_Master.ForeColor
Lbl_Array(CNT).Font = Lbl_Master.Font
Lbl_Array(CNT).Text = CStr(CNT)
Lbl_Array(CNT).Tag = CNT ' This is the clever bit so that we can find the index!
Lbl_Array(CNT).Visible = True
Lbl_Array(CNT).BringToFront()
AddHandler Lbl_Array(CNT).Click, AddressOf lblArray_click
Panel1.Controls.Add(Lbl_Array(CNT))
X = (X + W) + 8 ' Note 8 is your offset in X
CNT += 1
Next
Y = (Y + H) + 8 ' Note 8 is your offset in Y
Next
End Sub
'This is the Event handler for a click on the Array Label
Private Sub lblArray_click(ByVal sender As Object, ByVal e As EventArgs)
' fixed late binding with option strict on!!
' Just trick the compiler with these two lines
Dim Lbl_tmp As Label = CType(sender, Label)
Dim i As Integer = CInt(Lbl_tmp.Tag)
Lbl_Array(i).BackColor = Color.Aqua ' change back color to show we clicked on it
End Sub:
End Class