另一个验证特定格式的功能,如" ad12-XYX-123-EFD-20"
我创建了仅限数字的功能'我想要类似于这个的东西
currentControl.balanceResultTpl +='<div class="{[{'+AVAILABLE_QTY+'} > 0 ?"summary-qty-style-red":"summary-qty-style-green"]}">{'+AVAILABLE_QTY+'}/{'+QTY+'}</div></div>';
请帮忙!
答案 0 :(得分:1)
这是一种只检测字母的方法,但除此之外还有更多问题。
Private Function IsAllAlpha(text As String) As Boolean
Return text.All(Function(ch) Char.IsLetter(ch))
End Function
请注意,我写了Function
而不是Sub
。你的原始方法编写得很糟糕。您实际应该做的是处理控件的Validating
事件,验证该事件处理程序中的控件内容,然后将e.Cancel
设置为True
如果失败,在这种情况下控件将保持专注。验证可以在适当的位置完成,也可以采用String
并返回Boolean
的方法完成。例如:
Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
e.Cancel = Not ValidateTextBox(TextBox1, AddressOf IsAllAlphaOrSpace, "Please enter only letters or spaces.")
End Sub
Private Sub TextBox2_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
e.Cancel = Not ValidateTextBox(TextBox2, AddressOf IsAllNumeric, "Please enter only numeric digits.")
End Sub
Private Function ValidateTextBox(textBox As TextBox, validator As Func(Of String, Boolean), errorMessage As String) As Boolean
Dim isValid = validator(textBox.Text)
If Not isValid Then
textBox.SelectAll()
textBox.HideSelection = False
MessageBox.Show(errorMessage, "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error)
textBox.HideSelection = True
End If
Return isValid
End Function
Private Function IsAllAlphaOrSpace(text As String) As Boolean
Return text.All(Function(ch) Char.IsLetter(ch) OrElse ch = " "c)
End Function
Private Function IsAllNumeric(text As String) As Boolean
Return text.All(Function(ch) Char.IsDigit(ch))
End Function
Private Function IsAllAlphaNumeric(text As String) As Boolean
Return text.All(Function(ch) Char.IsLetterOrDigit(ch))
End Function
如果您确实要验证所指示的复杂格式,则可以考虑使用MaskedTextBox
或使用Regex
。我不是那么专家,但要找出字母和数字应该相当容易。