想要仅使用字母创建功能验证文本框

时间:2015-06-19 02:09:17

标签: vb.net winforms visual-studio-2010

另一个验证特定格式的功能,如" ad12-XYX-123-EFD-20"

我创建了仅限数字的功能'我想要类似于这个的东西

currentControl.balanceResultTpl +='<div class="{[{'+AVAILABLE_QTY+'} &gt; 0 ?"summary-qty-style-red":"summary-qty-style-green"]}">{'+AVAILABLE_QTY+'}/{'+QTY+'}</div></div>';

请帮忙!

1 个答案:

答案 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。我不是那么专家,但要找出字母和数字应该相当容易。