Devo adattare l'altezza delle labels alle dimensioni del form.
Questo è il codice che ho trovato.
Non mi piace molto, perchè ho dovuto togliere una fetta arbitraria all'altezza del form per evitare che l'ultima label fosse "spezzata"... ci deve essere qualcosa che non torna... forse è perchè il risultato del rapporto fra l'altezza dell'area client del form e il numero di labels restituisce cifre decimali.
Public Class Form1
Dim lblMorning, lblAfternoon, lblNight As ArrayList
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
lblNight(13).backcolor = Color.Red
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lblMorning = New ArrayList
lblAfternoon = New ArrayList
lblNight = New ArrayList
Dim numero, vertSpace, horSpace As Integer
numero = 31
vertSpace = 0
horSpace = 2
popola(0, numero, vertSpace, horSpace, lblMorning)
popola(1, numero, vertSpace, horSpace, lblAfternoon)
popola(2, numero, vertSpace, horSpace, lblNight)
End Sub
Sub popola(ByVal ordine, ByVal numero, ByVal vertSpace, ByVal horSpace, ByVal lblArray)
Dim etichetta As Label
For n = 0 To numero
etichetta = New Label
With etichetta
.Text = n + 1
.Height = (Me.ClientSize.Height - 50) / (numero - 1)
.BackColor = Color.White
.BorderStyle = BorderStyle.FixedSingle
.Left = (.Width + horSpace) * ordine
.Top = (etichetta.Height + vertSpace) * (n Mod numero)
End With
Me.Controls.Add(etichetta)
lblArray.add(etichetta)
Next
End Sub
End Class
C'è sempre l'evento sentinella, che a questo punto potrei anche togliere perchè è assodato che la creazione di matrici mediante gli oggetti ArrayList funziona egregiamente.
Nessun commento:
Posta un commento