0
我使用这个代码只是被输入
Private Sub MyTextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles MyTextBox.KeyPress
If Not Regex.Match(MyTextBox.Text, "^[a-z /s ']*$", RegexOptions.IgnoreCase).Success Then
MyTextBox.Text = MyTextBox.Text.Remove(MyTextBox.SelectionStart - 1, 1)
MyTextBox.Select(MyTextBox.Text.Count, 0)
End If
End Sub
,因此用户只能加字母,空格和撇号
代码工作,如果用户数字后自动删除关于正则表达式未被授权的字符
somethin8g
数字8为r emoved
但是,如果用户只是数字
somethin8
8号是可见的,直到用户按其它键,即使最坏的情况,如果用户按下“保存”按钮信息甚至与8号
有没有更好的办法只有在键入后自动取消对正则表达式无权字符接受?
集'e.Handled'为true以防止当前按键被处理。不*操作当前文本框中的文本! –
它不工作或我不明白的方式。在if中使用e.Handled = True,而不是文本操作,我仍然可以将一个数字和数字保留在文本框中。此外,我添加的代码就像如果e.KeyChar = Microsoft.VisualBasic.Strings.ChrW(Keys.Back)然后这样我就可以按空格键来删除 – fedeteka
的'if'声明应检查是否用户输入一个数字。如果他们确实如此,则将'e.Handled'设置为true以忽略按键。喜欢的东西:'如果(Char.IsDigit(e.KeyChar))然后e.Handled = TRUE;。您不应该操纵控件中的文本,并且正则表达式对于一个简单的问题来说太难了。 –