Originariamente inviato da Luciano79
codice:
For Each VarForm in Forms
If VarForm.Hdc = HandleMemorizzato Then
For Each VarControl in VarForm.Controls
If VarControl.Name = "TastoTurno" Then
If VarControl.Index = IndiceDelTastoPremuto Then
VarControl.BackColor = VbRed
EndIf
EndIf
Next
EndIf
Next
Ci sono un mucchio di cicli inutili: si può eliminare il più interno in questa maniera:
codice:
Dim VarForm As Form
For Each VarForm in Forms
If VarForm.Hdc = HandleMemorizzato Then
VarForm.Controls("TastoTurno")(IndiceDelTastoPremuto).BackColor=vbRed
EndIf
Next
Ma si può fare di meglio: in questo spezzone di codice si suppone che tu abbia memorizzato l'handle del form da qualche parte; perché non sostituire ad "HandleMemorizzato" una variabile di tipo MiaFormFiglia (o come si chiama la tua form figlia) che contenga un riferimento ad essa?
codice:
'In un qualche modulo
Public ff As MiaFormFiglia
'Nel punto in cui salveresti l'handle
ff=Me '(supponendo che ci troviamo nel modulo della form in questione)
'Nell'evento in questione:
ff.TastoTurno(IndiceDelTastoPremuto).BackColor=vbRed