Aimad MAJDOU Aimad MAJDOU - 5 months ago 22
Vb.net Question

Unable to cast object of type 'System.Windows.Forms.Button' to type > 'System.Windows.Forms.TextBox'

I wrote a function that empty all TextBox in my form:

Private Sub effacer()
For Each t As TextBox In Me.Controls
t.Text = Nothing
Next
End Sub


But I had this problem :


Unable to cast object of type 'System.Windows.Forms.Button' to type
'System.Windows.Forms.TextBox'.


I tried to add this
If TypeOf t Is TextBox Then
but I had the same problem

Answer

The Controls collection contains all controls of the form not only TextBoxes.

Instead you can use Enumerable.OfType to find and cast all TextBoxes:

For Each txt As TextBox In Me.Controls.OfType(Of TextBox)()
    txt.Text = ""
Next

If you want to do the same in the "old-school" way:

For Each ctrl As Object In Me.Controls
    If TypeOf ctrl Is TextBox
        DirectCast(ctrl, TextBox).Text = ""
    End If
Next
Comments