How do you use control collection in VB.NET?

How do you use control collection in VB.NET?

How do you use control collection in VB.NET? What I'm trying to do is find a quick way to pop up a message box if someone fails to input information into any text box on a form.

    Requires Free Membership to View

    When you register, you'll begin receiving targeted emails from my team of award-winning writers. Our goal is to provide a unique online resource for developers, architects and development managers tasked with building and maintaining enterprise applications using Visual Basic, C# and the Microsoft .NET platform.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchWinDevelopment.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchWinDevelopment.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

In WinForms, anything that ultimately derives from the Control base class, including the Form class, has a collection of container controls called Controls. In a Form or UserControl, the InitializeComponent method adds controls to this collection:

Private Sub InitializeComponent()
  Me.Button1 = New System.Windows.Forms.Button()
  Me.CheckBox1 = New System.Windows.Forms.CheckBox()
  Me.ComboBox1 = New System.Windows.Forms.ComboBox()
  Me.Label1 = New System.Windows.Forms.Label()
  ...
  Me.Controls.AddRange( _
    New System.Windows.Forms.Control() { _
      Me.Label1, _
      Me.ComboBox1, _
      Me.CheckBox1, _
      Me.Button1})
  ...
End Sub

At any time, the control container can access these controls:


Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
  Handles MyBase.Load
  Dim control As Control
  For Each control In Me.Controls
    MessageBox.Show(control.Name)
  Next
End Sub

Based on this, you could handle the accept button on your form to check whether all text boxes have been filled with data:


Sub okButton_Click(ByVal sender As Object, ByVal e As EventArgs) _
  Handles okButton.Click
  Dim control As Control
  For Each control In Me.Controls
  ' Check each control to see if it's a TextBox
    If TypeOf (control) Is TextBox Then
      Dim textbox As TextBox = control
      ' Check each TextBox for Text
      If textbox.Text = "" Then
        ' Complain
        MessageBox.Show("Please enter text into all text boxes!")
        ' Set TextBox for input
        Me.ActiveControl = textbox
        ' Don't let the Form go away
        Me.DialogResult = DialogResult.None
        ' Stop checking
        Return
      End If
    End If
  Next
  ' Let the Form go away
  Me.DialogResult = DialogResult.OK
  Me.Close()
End Sub

For more information about Form data validation, see "WinForms Data Validation."

This was first published in January 2003