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 ClassC'è 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