gpt4 book ai didi

vb.net - 如何避免在 Windows 应用程序的文本框中使用特殊字符

转载 作者:行者123 更新时间:2023-12-02 19:56:22 25 4
gpt4 key购买 nike

我正在开发 Windows 应用程序。我有一个表单,我正在尝试验证该表单上的文本框。

我想对文本框进行一些验证,例如文本框应该只接受字母、数字和逗号。(没有其他字符,例如特殊符号。)同样,当光标位于该文本框中时,它应该接受 Enter 键。

我正在尝试编写代码,但有些代码不起作用。但它仍然采用特殊字符,例如 <>/;'我必须做出哪些改变?

这是代码...

Key Down Event

 Private Sub txtOLDBuildingName_KeyDown(sender As Object, e As KeyEventArgs) Handles txtOLDBuildingName.KeyDown

' Initialize the flag to false.
nonNumberEntered = False

' Determine whether the keystroke is a number from the top of the keyboard.
If (e.KeyCode < Keys.D0 And e.KeyCode > Keys.D9) And (e.KeyCode > Keys.A And e.KeyCode < Keys.Z) Then
nonNumberEntered = True
End If
'If shift key was pressed, it's not a number.
If Control.ModifierKeys = Keys.Shift Then
nonNumberEntered = True
End If


End Sub

Key Press Event

  Private Sub txtOLDBuildingName_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtOLDBuildingName.KeyPress
If nonNumberEntered = True Then
e.Handled = True
End If

End Sub

最佳答案

删除正在处理 KeyDown 事件的子进程,并将正在处理 KeyPress 事件的子进程替换为此:

ReadOnly ValidChars As String = _
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,"

Private Sub txtOLDBuildingName_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) _
Handles txtOLDBuildingName.KeyPress

e.Handled = Not (ValidChars.IndexOf(e.KeyChar) > -1 _
OrElse e.KeyChar = Convert.ToChar(Keys.Back))

End Sub

Update:

此修改更加精确,它在粘贴之前比较剪贴板内容。

ReadOnly AllowedKeys As String = _
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,"

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress

Select Case e.KeyChar

Case Convert.ToChar(Keys.Enter) ' Enter is pressed
' Call method here...

Case Convert.ToChar(Keys.Back) ' Backspace is pressed
e.Handled = False ' Delete the character

Case Convert.ToChar(Keys.Capital Or Keys.RButton) ' CTRL+V is pressed
' Paste clipboard content only if contains allowed keys
e.Handled = Not Clipboard.GetText().All(Function(c) AllowedKeys.Contains(c))

Case Else ' Other key is pressed
e.Handled = Not AllowedKeys.Contains(e.KeyChar)

End Select

End Sub

关于vb.net - 如何避免在 Windows 应用程序的文本框中使用特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19486244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com