我有一个winForm,它有两个按钮和两个控件。注册按钮单击需要从这两个控件进行验证。验证按钮不需要任何验证。这就是为什么我不能把注意力放在那些控制上。
在验证和textchange事件下,Control的验证工作正常。但是,如果单击“注册”按钮,则验证无效。 而且我不想复制并粘贴所有验证码 注册单击。什么是可能的优化解决方案??
如果某人想要测试,请提供一些示例代码。
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
答案 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