JavascriptProva

domenica 18 agosto 2013

Dal cervellotico al lapalissiano: ovvero, non più una classe che inserisce i controlli in un ArrayList, ma una classe che eredita da ArrayList.

Tutto da rifare.
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 Class
Ricominciamo 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 Class
Banale! 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