Ripercorriamo le tappe della disposizione di una TextBox sul form.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim casella As TextBox = New TextBox
casella.Text = "fanqulo"
Me.Controls.Add(casella)
End Sub
End Class
Ripassiamo (a mente, senza sbirciare) il codice per disporle in griglia...
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For n As Integer = 0 To 41
Dim casella As TextBox = New TextBox
casella.Left = casella.Width * (n Mod 3)
casella.Top = casella.Height * (n \ 3)
casella.Text = n
Me.Controls.Add(casella)
Next
End Sub
End Class
Ecco il risultato:Benissimo!
Adesso cominciamo a rendere un po' "autonomo" e "flessibile" il codice...
Ecco il primo passo: creazione di una classe Griglia
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim miaGriglia As griglia = New griglia(Me)
End Sub
End Class
Class griglia
Sub New(ByRef myForm As Form)
For n As Integer = 0 To 41
Dim casella As TextBox = New TextBox
casella.Left = casella.Width * (n Mod 3)
casella.Top = casella.Height * (n \ 3)
casella.Text = n
myForm.Controls.Add(casella)
Next
End Sub
End Class
che funziona esattamente allo stesso modo di prima. Con questa piccola modifica iniziale, può essere chiamata in seno a diversi form.
Adesso rendiamo flessibili, ovviamente, il numero delle caselle e la lunghezza delle varie righe.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim miaGriglia As griglia = New griglia(Me, 42, 5)
End Sub
End Class
Class griglia
Sub New(ByRef myForm As Form, ByVal numCaselle As Integer, ByVal rowLength As Integer)
For n As Integer = 0 To (numCaselle - 1)
Dim casella As TextBox = New TextBox
casella.Left = casella.Width * (n Mod rowLength)
casella.Top = casella.Height * (n \ rowLength)
casella.Text = n
myForm.Controls.Add(casella)
Next
End Sub
End Class
con questo esempio, ottengo 42 caselle in file di 5.Istanziando la classe con altri parametri...
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim miaGriglia As griglia = New griglia(Me, 60, 4)
End Sub
End Class
...ottengo 60 caselle in file di 4, eccetera...
Ma adesso viene la sfida più appassionante e più "da ragionarci sopra", ossia la flessibilità per quanto riguarda il tipo di elementi da disporre in griglia, cessando di essere vincolati alle TextBoxes.
Per far questo, devo prendere dimestichezza con i Generics...

Nessun commento:
Posta un commento