Problem solve Get help with specific problems with your technologies, process and projects.

Getting multiple textboxes and comboboxes into two arrays

I am trying to upgrade code from VB4 to VB.NET. I am a bit confused by the collection (I am used to an array). On a form, I have multiple textboxes and multiple comboboxes. What I want to do is get these into two arrays, (one for the textboxes and one for the comboboxes), and be able to access each control in the collection individually (i.e. to add items to a specific combobox). I am trying to access the form control collection.

For counter =0 to controls.Count to then assign the different textboxes and comboboxes to their collection, but I don't seem to be able to get this to work?

So how do I do it? Thank you for your help.
I can understand your bemusement to this issue. It took me a few weeks to work this out before finally getting to grips with all the changes.

To be honest though you are very close to a solution....

As you discovered, the form object contains a collection called 'CONTROLS,' and within this the property are the controls themselves. I would advise keeping the information in there and using it. The following code will do what I think you are after achieving:

        Dim x As Control
        For Each x In Me.Controls
            Select Case (x.GetType.ToString)
                Case "System.Windows.Forms.TextBox"
                    Dim y As TextBox = CType(x, TextBox)
                Case Else
                    ' Do nothing
            End Select

Note that I used the CTYPE function to change the generic object x,' which is of type CONTROL to the type that is desired (in this case a textbox). You should note that the case uses the fully qualified name of the type. So if you were to add comboboxes to this, then you would perhaps add the case "System.Windows.Forms.ComboBox." Hope that helps.

Dig Deeper on Win Development Resources

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.