Loop through Controls in .NET

You would think this would be the easiest task to do in VB .Net, but the old way of doinf thinsg does not seem to work
And do you reckon I can find it anywhere on the Microsoft Site?

Can someone tell me how I loop through all Textboxes on a Form to simply empty them.
The textboxes are inside a TabPage

Wayne
wlawsonAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

bacon7181Commented:
I just recently had to loop through all the controls on a form for something.

This is just one way that you could implement this loop, this uses a recursive function.

    Public Sub DoTheLoop()
        LoopThroughAllControls(Me.Controls)
    End Sub

    Private Sub LoopThroughAllControls(ByVal controls As ControlCollection)
        Dim c As Control
        For Each c In controls
            If GetType(TextBoxBase).IsInstanceOfType(c) Then
                ' c is a textbox based control, do something with it
            End If
            ' loop through sub controls
            LoopThroughAllControls(c.Controls)
        Next
    End Sub
0
wlawsonAuthor Commented:
Thanks for that it works well for all Controls on the actual form, but it will not work for anything within the TabPage Control.

Wayne
0
wlawsonAuthor Commented:
I can see what your code is trying to do and if feed the TabControl into your Sub Rountine I can count the Controls on the page, but when I try to loop through the controls I get an error "Specific Cast is not valid"
0
bacon7181Commented:
Try this one:


    Private Sub LoopThroughAllControls(ByVal parentControl As Control)
        Dim c As Control

        ' Make sure there are children to iterate over
        If Not c.HasChildren Then
            Return
        End If

        For Each c In parentControl.Controls
            ' Find children of desired type
            If GetType(TextBox).IsInstanceOfType(c) Then
                ' c is a textbox based control, do something with it
                c.Text = "Howdy"
            End If
            ' If this control also has children
            If c.HasChildren Then
                ' loop through sub children
                LoopThroughAllControls(c)
            End If
        Next
    End Sub
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
wlawsonAuthor Commented:
Top Shelf ... Worked a treat
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.