Parto sempre dalle cose più cervellotiche per poi semplificare.
Anzichè creare una classe che inserisce oggetti in un ArrayList, perchè non creare una classe che eredita ArrayList?
Public Class griglia Inherits ArrayList End ClassRicominciamo da capo.
Voglio semplicemente che la mia classe mi crei, come prima, una griglia di caselle.
Public Class Griglia(Of T As {New, Control}) Inherits ArrayList Sub New(ByRef frm As Form, ByVal nCaselle As Integer, ByVal rowLength As Integer, ByVal XCoord As Integer, ByVal YCoord As Integer, Optional ByVal HSpace As Integer = 0, Optional ByVal VSpace As Integer = 0) For n As Integer = 0 To nCaselle - 1 Dim casella As T = New T casella.Left = XCoord + (HSpace + casella.Width) * (n Mod rowLength) casella.Top = YCoord + (VSpace + casella.Height) * (n \ rowLength) frm.Controls.Add(casella) Add(casella) Next End Sub End ClassBanale! Ho creato una classe che non usa vie contorte per caricare in un array i controlli creati, ma, ereditando da un ArrayList, è essa stessa l'array in cui i controlli vengono caricati.
Il programma che usa questa classe:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim miaGriglia = New Griglia(Of Controllo)(Me, 10, 3, 0, 0)
For n As Integer = 0 To miaGriglia.Count - 1
miaGriglia(n).text = n
Next
End Sub
End Class
Class Controllo
Inherits TextBox
End Class
dove in rosso è marcato il codice che ho usato per testare che l'array "funzionasse" a dovere!
Nessun commento:
Posta un commento