Validation 在vb.net上验证电话号码
我在Visual Studio中使用vb.net有一个常规窗体(不是windows窗体)。我想在电话字段失去焦点时验证它,在用户将标签移出字段的意义上。我如何发起活动?下拉列表不随lostfocus事件一起出现? 谢谢Validation 在vb.net上验证电话号码,validation,events,phone-number,Validation,Events,Phone Number,我在Visual Studio中使用vb.net有一个常规窗体(不是windows窗体)。我想在电话字段失去焦点时验证它,在用户将标签移出字段的意义上。我如何发起活动?下拉列表不随lostfocus事件一起出现? 谢谢 ~Nita尝试使用Control.Validating和Control.Validated事件。基本上,验证事件是为验证而设计的。如果手机#无效,请设置e.Cancel=True,焦点将停留在该字段上 下面的代码示例使用派生类文本框并验证用户输入的电子邮件地址。如果电子邮件地址不
~Nita尝试使用Control.Validating和Control.Validated事件。基本上,验证事件是为验证而设计的。如果手机#无效,请设置e.Cancel=True,焦点将停留在该字段上 下面的代码示例使用派生类文本框并验证用户输入的电子邮件地址。如果电子邮件地址不是标准格式(包含“@”和“.”),验证将失败,将显示ErrorProvider图标,并取消事件。此示例要求在表单上创建TextBox和ErrorProvider控件。 -
您可以使用以下方法验证电话号码。只需将电话号码参数传递给该方法
Protected Sub txtPhone_TextChanged(sender As Object, e As EventArgs) Handles txtPhone.TextChanged
If Not IsPhoneNumberValid(txtPhone.Text) Then
Dim isvalid = False
lblValidatioMessage.Visible = True
lblValidatioMessage.Text = "*Invalid Phonenumber"
Else
lblValidatioMessage.Visible = False
lblValidatioMessage.Text = ""
End If
End Sub
Private Shared Function IsPhoneNumberValid(phoneNumber As String) As Boolean
Dim result As String = ""
Dim chars As Char() = phoneNumber.ToCharArray()
For count = 0 To chars.GetLength(0) - 1
Dim tempChar As Char = chars(count)
If [Char].IsDigit(tempChar) Or "()+-., ".Contains(tempChar.ToString()) Then
result += StripNonAlphaNumeric(tempChar)
Else
Return False
End If
Next
Return result.Length = 10 'Length of US phone numbers is 10
End Function
Private Shared Function StripNonAlphaNumeric(value As String) As String
Dim regex = New Regex("[^0-9a-zA-Z]", RegexOptions.None)
Dim result As String = ""
If regex.IsMatch(value) Then
result = regex.Replace(value, "")
Else
result = value
End If
Return result
End Function
在你的代码前面
<asp:Label ID="lblPhone" runat="server" Text="Phone"></asp:Label>
<p><asp:TextBox ID="txtPhone" runat="server" AutoPostBack="True"></asp:TextBox></p>
<asp:Label ID="lblValidatioMessage" Visible="False" runat="server" Text="" ForeColor="red"></asp:Label>
那么,如何向控件添加验证和验证事件。而且我在下拉列表中没有得到“canceleventhandler”。我这样做了,但它是不正确的。验证为EventHandler End ClassThank ACS的分部类txtPhone公共事件将尝试一次。@ACS-如何显示错误消息?您可以将其写入标签吗?是的,您可以添加标签并在其中返回验证错误。我编辑了我的答案。或者,您可以使用asp.net自定义验证。您可以在这里找到更多信息:尽管这段代码可以回答这个问题,但提供关于为什么和/或如何回答这个问题的额外上下文将显著提高其长期价值。请在您的回答中添加一些解释。
<asp:Label ID="lblPhone" runat="server" Text="Phone"></asp:Label>
<p><asp:TextBox ID="txtPhone" runat="server" AutoPostBack="True"></asp:TextBox></p>
<asp:Label ID="lblValidatioMessage" Visible="False" runat="server" Text="" ForeColor="red"></asp:Label>
Private Function IsPhoneNumberValid(ByVal Number As String) As Boolean
dim PhoneValid As boolean
Dim PhoneNumber As String = "^[1-9]\d{2}-[1-9]\d{2}-\d{4}$"
Dim ChekPhone As New Regex(PhoneNumber )
If Not String.IsNullOrEmpty(Number ) Then
PhoneValid = ChekPhone.IsMatch(Number )
Else
PhoneValid = False
End If
Return PhoneValid
End Function
Private Sub txtPhoneNumber_LostFocus(sender As Object, e As System.EventArgs) Handles txtPhoneNumber.LostFocus
If Not IsPhoneNumberValid(txtPhoneNumber.Text) Then
MessageBox.Show("Please Enter Phone Number!")
txtPhoneNumber.Clear()
txtPhoneNumber.Focus()
End If
End Sub