Pare che non solo io, ma anche fior di programmatori professionisti si siano trovati in difficoltà per questo.
Uno degli artifizi che ho trovato spulciando alla ricerca di soluzioni al problema è quello di apporre alla proprietà Name del controllo un numero, in modo da usarlo come indice di una matrice di controlli.
Posso sperimentare sullo scheletro del mio programma qualcosa del genere...
Per intanto, diamo un Nome ai controlli che ho creato.
Sub disponiCaselle(Of T As New)(ByVal nome As String, ByVal larghezza As Integer, ByVal sinistra As Integer)
Dim numero As Integer
numero = DateTime.DaysInMonth(anno, mese)
Dim cas As Object
For n = 0 To numero - 1
cas = New T
With cas
.Name = nome & n + 1
.BorderStyle = BorderStyle.FixedSingle
.BackColor = Color.White
.Width = larghezza
.Left = sinistra
.Top = .Height * (n Mod numero)
.testo = .Name 'GiornoDellaSettimana(CDate(n + 1 & "/" & mese & "/" & anno))
.Scrivi()
End With
Me.Controls.Add(cas)
Next
End Sub
Sì, ecco. Per fare la prova ho fatto in modo che la proprietà testo di ogni elemento fosse la sua proprietà Name, "commentizzando" il codice che c'era prima per non perderlo.Ora sto pensando di creare per ciascuna classe una proprietà Index nella quale porre il numero ricavato dalla proprietà Name con un artifizio di manipolazione delle stringhe.
In questo modo, posso far riferimento a ogni elemento con il suo indice, un po' come nel buon (neanche tanto!) vecchio VB6...
Nessun commento:
Posta un commento