我想出了如何在文本框中只获取数字代码:
Dim smessage As String = String.Empty
If Not IsNumeric(Student_IDTextBox.Text) Then
smessage += "The ID must be Numeric!" + Environment.NewLine
End If
但我希望这个文本框有2个字母和3个数字,你知道在vb中编程的最佳方法是什么吗?
答案 0 :(得分:2)
请尝试使用自定义蒙版进行蒙版文本框。 设置掩码,如LLL00。 请参阅此链接 http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask.aspx
答案 1 :(得分:0)
如果ID必须是3个数字和2个字符,那么可能也是一个模式(与许多牌照一样),并且比单纯的字符类型计数更重要。掩盖文本框是一种方式,计数数字和计数字母是另一种方式。
如果存在AAA-NN或AAANN等模式,您可以将ID分成2个输入,一个alpha,一个数字。这通常使用诸如(US)社会安全号码(NNN-NN-NNNN)之类的模式中的ID来完成。 RegEx也可能用于测试模式。
如果这是一个登录或其他数据库应用程序,而不是编写太多代码来简单地测试模式测试该条目。您可以收集他们输入的任何内容并进行简单的查询以查看ID是否存在,这毕竟比模式更重要。
表单上的标签可以告诉他们使用### AA或其他什么,但是当你可以简单地告诉他们什么时候无效时,测试模式并报告模式错误似乎很愚蠢。毕竟,即使它具有正确的模式,它仍然可以是无效的ID。
答案 2 :(得分:0)
这肯定不是最好的方式,但我不知道你是否会找到最佳方式,因为 best 是主观的通常依赖于不止一种情况以及意见。
假设一个名为txtinput
的文本框和一个标签,您将在其中显示名为lblMessage
的结果,并假设您使用的是ASCII字符输入:
在TextChanged
txtinput
事件中,您可以拥有以下内容:
'Check if the length is greater than five, if it is truncate it.
If txtinput.Text.Length > 5 Then
txtinput.Text = Mid(txtinput.Text, 1, 5)
txtinput.Select(txtinput.Text.Length, 0)
End If
'counters for letters and numbers
Dim letters As Integer = 0
Dim numbers As Integer = 0
'Parse and compare the input
For Each c As Char In txtinput.Text
If Asc(c) >= 48 And Asc(c) <= 57 Then 'ASCII characters for 0-9
numbers += 1
ElseIf Asc(c) >= 65 And Asc(c) <= 90 Then 'ASCII characters for A-Z
letters += 1
ElseIf Asc(c) >= 97 And Asc(c) <= 122 Then 'ASCII characters for a-z
letters += 1
End If
Next
If letters = 2 And numbers = 3 Then
lblMessage.Text = "Correct Format"
Else
lblMessage.Text = "Incorrect Format"
End If
使用Linq:
If txtinput.Text.Length > 5 Then
txtinput.Text = Mid(txtinput.Text, 1, 5)
txtinput.Select(txtinput.Text.Length, 0)
End If
If txtinput.Text.Count(Function(x As Char) Char.IsLetter(x)) = 3 And txtinput.Text.Count(Function(x As Char) Char.IsNumber(x)) = 2 Then
lblMessage.Text = "Correct Format"
Else
lblMessage.Text = "Incorrect Format"
End If