JavascriptProva

venerdì 9 agosto 2013

Una soluzione migliore per impostare le proprietà del controllo di cui si vuole ottenere una griglia

Ma ho un'idea migliore e meno cervellotica (spesso parto dalle soluzioni cervellotiche per poi trovare la più lineare).
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