Я бы порекомендовал использовать событие Validating элементов управления TextBox с элементом управления поставщика ошибок (просто добавьте его в форму):
Private Sub TextBox_Validating( sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating, TextBox2.Validating, ComboBox1.Validating
Dim ctl As Control = CType(sender, Control)
If ctl.Text = ""
e.Cancel = True
ErrorProvider1.SetError(ctl,"Please enter a value")
End If
End Sub
Тогда вы можете просто позвонить:
ErrorProvider1.Clear()
If Me.ValidateChildren()
' continue on
End If
Приятно то, что пользователю сообщают, какое текстовое поле отсутствует и является обязательным.Это работает с другими элементами управления, кроме текстовых полей, так что вы можете предоставить более полное решение.Кроме того, если вы попадаете в более позднюю точку, где одному или двум текстовым полям не нужно иметь значения, вы просто не проверяете их, вместо того, чтобы добавлять особые случаи в свои циклы.
Наконец, если вы не используетене хотите печатать все элементы управления, тогда вы можете сделать это в форме загрузки:
For Each c As Control In Me.Controls
If TypeOf(c) is TextBox or TypeOf(c) is ComboBox
AddHandler c.Validating, AddressOf Me.TextBox_Validating
End If
Next