我正在尝试验证在文本框中输入的电子邮件地址,我希望当用户使用无效的电子邮件地址留下电子邮件地址字段时显示错误消息“电子邮件地址无效。”
这就是我在模块下所拥有的:
Module Connection
Sub ValidateEmail(Byval mail as String)
Dim email as new System.Text.RegularExpressions.Regex("\S+@\S+\.\S+")
If email.IsMatch(mail) Then
Else
MsgBox("The Email is Not Valid",msgBoxStyle.Critical,"Invalid Email")
End If
End Sub
End Module
然后我双击电子邮件文本框并输入以下代码:
If txtemail.text = " " Then
Else
ValidateEmail(txtemail.text)
End If
现在问题是,当我运行我的程序时,它不允许我完成输入电子邮件地址,我输入第一个字母,它给我错误消息“电子邮件无效”,我希望它允许我完成输入电子邮件地址然后当我移动到下一个字段时,如果电子邮件无效,它可以给我留言。
任何了解我的问题的人,请帮助。
谢谢
答案 0 :(得分:4)
当您双击TextBox
时,它会创建TextBox_TextChanged
事件处理程序,每次文本框内的文本更改时都会触发该事件处理程序,而您需要订阅在焦点丢失时触发的事件TextBox
1}},即TextBox_Leave
。
要订阅Leave
活动,请点击TextBox
上的F4,然后会打开“属性”窗口,导航至Events
标签,找到Leave
事件并双击它。
答案 1 :(得分:0)
您正在使用OnChange事件
您可以使用Onleave,并在出现错误时将焦点设置回文本框。 您可以跳过检查有效格式,直到在Onchange中输入一定数量,但执行完全检查是否保留。
上述任何一种情况都会产生影响,因为某些后期功能需要电子邮件才有效。因此,在尝试发送或保存之前,您需要再次检查。
或者您可以使用消息框删除通知,例如,当它无效时显示错误图像。后来的功能取决于有效的模式,然后可以简单地检查“错误组件”是否可见。更像是我要在网页上验证表格。
最后一个是我的偏好,而不是消息框错误的忠实粉丝。