单击Win Form中的按钮(类似于提交)后,验证无效

时间:2015-10-23 05:40:59

标签: vb.net winforms validation

我有一个winForm,它有两个按钮和两个控件。注册按钮单击需要从这两个控件进行验证。验证按钮不需要任何验证。这就是为什么我不能把注意力放在那些控制上。

在验证和textchange事件下,Control的验证工作正常。但是,如果单击“注册”按钮,则验证无效。 而且我不想复制并粘贴所有验证码 注册单击。什么是可能的优化解决方案??

enter image description here

如果某人想要测试,请提供一些示例代码。

Dim vIDErrorProvider As New ErrorProvider()
Dim vintResultIDParse As Integer

Private Sub txtEmployeeID_TextChanged(sender As Object, e As EventArgs) Handles txtEmployeeID.TextChanged
    If (txtEmployeeID.Text = String.Empty) Then

        vIDErrorProvider.SetError(txtEmployeeID, "ID is required!")

        Return
    Else
        vIDErrorProvider.Clear()
    End If

    If Not Int32.TryParse(txtEmployeeID.Text.ToString(), vintResultIDParse) Then
        vIDErrorProvider.SetError(txtEmployeeID, "Only Integer is allowed")
        Return
    Else
        vIDErrorProvider.Clear()
    End If

End Sub

Private Sub txtEmployeeID_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles txtEmployeeID.Validating

    If (txtEmployeeID.Text = String.Empty) Then

        vIDErrorProvider.SetError(txtEmployeeID, "ID is required!")

        Return
    Else
        vIDErrorProvider.Clear()
    End If

    If Not Int32.TryParse(txtEmployeeID.Text.ToString(), vintResultIDParse) Then
        vIDErrorProvider.SetError(txtEmployeeID, "Only Integer is allowed")
        Return
    Else
        vIDErrorProvider.Clear()
    End If


End Sub

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Me.ActiveControl = Label1


End Sub

1 个答案:

答案 0 :(得分:2)

您不需要在TextChanged()事件中放置任何验证代码,因为当控件的焦点丢失时,将自动调用验证。

要处理“注册”按钮单击的情况,请将以下代码放入其Click()事件中以进行表单范围的验证。

For Each c As Control In Controls
    c.Focus()
    Validate()
Next

请参阅https://msdn.microsoft.com/en-us/library/ms950965.aspx#winforms03162004_topic2