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 Classe 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 Classdefinendo 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