是否有更清晰的方法来处理文本框验证事件

时间:2015-11-21 15:06:19

标签: vb.net winforms validation error-handling

我在表单上有20多个文本框,我想知道是否有一个更清晰的方法可以用来处理这些控件的验证,而不是使用预期的验证事件处理程序。

我试过循环遍历表单上的所有控件,检查它们是否有正确的有效值,如果值无效则在适当的控件上显示ErrorProvider,从而将20多个事件处理程序减少到30行码。这个过程是一个函数,它将返回按钮单击时调用的true或false,如果返回true,将继续使用更多逻辑。

我想知道这是不正确的还是我应该坚持使用验证事件处理程序

1 个答案:

答案 0 :(得分:0)

当您对所有(或大部分)文本框使用相同的验证规则时(如注释中所述),您可以为这些文本框的Validating事件分配单个处理程序,并在该处理程序中验证它们。例如:

Private Sub TXT_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) _
    Handles TextBox1.Validating, TextBox2.Validating, TextBox3.Validating

    'Find the validating control
    Dim txt As TextBox = DirectCast(sender, TextBox)

    'Check validation for that control
    If (txt.Text.Length > 10) Then

        'Set validation message if the state is invalid
        Me.ErrorProvider1.SetError(txt, "Maximum length of text is 10 characters.")

        'Say the state is invalid
        e.Cancel = True
    Else

        'Clear probable privious validation error for that textbox
        Me.ErrorProvider1.SetError(txt, String.Empty)
    End If
End Sub