Mi vengono in mente due possibili soluzioni. O quando crei i button e li aggiungi alla List (prima di metterli sul form) esegui il ciclo for che hai postato (gli elementi di una List sono accessibili tramite indice), oppure se questo non ti è possbile, e hai solo i controlli della form, aggiungili ad una Lista con un For Each iterato sugli elementi del form, e poi segui la prima procedura.
Anche se puoi fare in molti altri modi (non ti verrà proprio naturale proveniendo da vb6). Ad esempio puoi sfruttare i nomi dei buttons ("button1","button2"
, in particolare puoi trattare il numero alla fine del nome come un indice. Per farlo, basta che ti crei una funzione, che richieda come parametro il numero scelto. All'interno della funzione dovrai scrivere una cosa del genere:
Function GetButton(Index as int16) as button
For Each B as Button in Form.Controls
If B.Name="button" & Index.tostring then
return B
End If
Next
End Function
Piccola precisazione...se utilizzi un For Each come ti ho scritto nella funzione, devi prestare attenzione ai controlli presenti sul form. Questo perchè scrivendo For each B
as button, ogni qualvolta che il ciclo incontrerà un controllo che non sia un button, proverà ad effettuare il cast (cioè a convertirlo in un button) e questo ti genererà probabilmente un errore. Se dovessi avere controlli diversi da button nel form, dovresti modificare il for each in questo modo:
For Each C as control in form.controls
If Typeof(C) Is button then
...
End If
In questo modo, ogni volta che il for each incontrerà un controllo nel form, controllerà se è un button o meno, e svolgerà il suo compito solo nel primo caso, altrimenti passerà al controllo successivo
Come al solito dimmi se non hai capito qualcosa