Perchè non rendere opzionali anche i parametri relativi alle coordinate della griglia, con valore di default pari a zero?
Public Class Griglia(Of T As {New, Control})
Inherits ArrayList
Sub New(ByRef frm As Form, ByVal nCaselle As Integer, ByVal rowLength As Integer, Optional ByVal XCoord As Integer = 0, Optional ByVal YCoord As Integer = 0, 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
con la conseguenza che il programma "chiamante" deve specificare obbligatoriamente solo:
- Il form in cui creare la griglia di controlli;
- il numero di caselle;
- la lunghezza delle righe.
Ecco:
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)
For n As Integer = 0 To miaGriglia.Count - 1
miaGriglia(n).text = n
Next
End Sub
End Class
Class Controllo
Inherits TextBox
End Class
Funziona lo stesso, ed è mnemonicamente più facile!
Nessun commento:
Posta un commento