Ciao a tutti,
creo da codice, all'interno di una DataGridView, alcuni controlli TextBox per visualizzare alcune informazioni... le Textbox vengono visualizzate dopo una certa selezione da parte dell'utente, ogni volta che visualizzo le textbox devo prima cancellare quelle presenti dalla selezione precedente.

Ovviamente la prima cosa che mi è venuta in mente è fare

codice:
DataGridView1.Controls.Clear
ma poi rendendomi conto che all'interno della DGV c'erano altri controlli come le ScrollBar ho preferito cancellare selettivamente solo le TextBox con un classico ciclio:

codice:
        For Each Ctrl As Control In DataGridView1.Controls
            If TypeOf Ctrl Is TextBox Then Ctrl.Dispose()
        Next
OK. Ora questo ciclo mi cancella solo alcune TextBox... ho verificato e questo perchè certe non le esamina proprio, come se non avessero come .Parent la DataGridView e invece ovviamente hanno la prorietà impostata correttamente su DataGridView1.

Ho provato allora ad usare un ciclo:

codice:
        For Ctrl As Integer = 0 To DataGridView1.Controls.Count
            If TypeOf DataGridView1.Controls.Item(Ctrl) Is TextBox Then DataGridView1.Controls.Item(Ctrl).Dispose()
        Next
Questo mi esamina tutti i controlli ma ovviamente ad un certo punto da errore sull'indice Ctrl visto che, dopo aver cancellato alcuni controlli, supera il numero totale DataGridView1.Controls.Count....

Mi date un consiglio?

Grazie!