在 Visual Basic 中限制文本框的输入
Restricting input to a textbox in Visual Basic
我需要限制用户在文本框中输入特定数据。我的要求是:
1. 第一个字符必须是小写的b或h。
2. 只接受之后的字母。
我有代码只接受基于 ascii 等价物的字母,但不知道如何只限制第一个字母。
如果我可以限制用户编辑该值,我也会接受根据单选按钮的选择输入该字母。
我相信这些也可以使用正则表达式来完成,但没有太多经验。
Private Sub txtSysName_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSysName.KeyPress
If Asc(e.KeyChar) < 65 Or Asc(e.KeyChar) > 90 And Asc(e.KeyChar) < 97 Or Asc(e.KeyChar) > 122 Then
e.Handled = True
End If
End Sub
你可以做一个检查,如果第一个字母不是 b 或 h,它会自动更改。像这样:
If Not Left(TextBox.Text, 1) = "b" Or Not Left(TextBox.Text, 1) = "h" Then
TextBox.Text = Replace(Left(TextBox.Text, 1), "b")
End If
如果第一个字母不是 b 或 h,它会将第一个字母替换为 'b',但如果您愿意,也可以轻松地显示错误消息。
根据 Chris 的建议,我使用了这个,因为从 vba 2010 年起,left 和 replace 函数不能再像他的回答中那样使用了。
If Not acro.Substring(1) = "u" Or Not acro.Substring(1) = "c" Then
txtAcro.Text = acro.Replace(acro.Substring(1), "u")
End If
我需要限制用户在文本框中输入特定数据。我的要求是: 1. 第一个字符必须是小写的b或h。 2. 只接受之后的字母。
我有代码只接受基于 ascii 等价物的字母,但不知道如何只限制第一个字母。
如果我可以限制用户编辑该值,我也会接受根据单选按钮的选择输入该字母。
我相信这些也可以使用正则表达式来完成,但没有太多经验。
Private Sub txtSysName_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSysName.KeyPress
If Asc(e.KeyChar) < 65 Or Asc(e.KeyChar) > 90 And Asc(e.KeyChar) < 97 Or Asc(e.KeyChar) > 122 Then
e.Handled = True
End If
End Sub
你可以做一个检查,如果第一个字母不是 b 或 h,它会自动更改。像这样:
If Not Left(TextBox.Text, 1) = "b" Or Not Left(TextBox.Text, 1) = "h" Then
TextBox.Text = Replace(Left(TextBox.Text, 1), "b")
End If
如果第一个字母不是 b 或 h,它会将第一个字母替换为 'b',但如果您愿意,也可以轻松地显示错误消息。
根据 Chris 的建议,我使用了这个,因为从 vba 2010 年起,left 和 replace 函数不能再像他的回答中那样使用了。
If Not acro.Substring(1) = "u" Or Not acro.Substring(1) = "c" Then
txtAcro.Text = acro.Replace(acro.Substring(1), "u")
End If