Lasciare alla classe Griglia il solo compito di disporre i controlli, lasciando alla creazione della classe da dare in pasto all'istanziazione della griglia tutto ciò che riguarda le caratteristiche intrinseche dei controlli.
Riporto le classi Griglia ai loro codici originari:
Imports System.Windows.Forms
Public Class HorGriglia(Of T As {New, Control})
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 T = New T
casella.Left = casella.Width * (n Mod rowLength)
casella.Top = casella.Height * (n \ rowLength)
myForm.Controls.Add(casella)
Next
End Sub
End Class
Public Class VertGriglia(Of T As {New, Control})
Sub New(ByRef myForm As Form, ByVal numCaselle As Integer, ByVal colLength As Integer)
For n As Integer = 0 To (numCaselle - 1)
Dim casella As T = New T
casella.Top = casella.Height * (n Mod colLength)
casella.Left = casella.Width * (n \ colLength)
myForm.Controls.Add(casella)
Next
End Sub
End Class
e il programma che usa queste classi diventa così:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim miaGriglia As New VertGriglia(Of GTextBox)(Me, 14, 4)
End Sub
End Class
Class GTextBox
Inherits TextBox
Sub New()
Multiline = True
Height = 50
Width = 50
End Sub
End Class
definendo qui, nel costruttore della classe GTextBox, anche l'altezza e la larghezza delle TextBoxes da usare nella griglia (e se si vuole anche colore, testo eccetera). Mi sembra più razionale.
Nessun commento:
Posta un commento