使用VB.net和Visual Studio有一种方法可以全局(跨项目中所有表单的所有字段)阻止用户将单引号字符输入字段。我正在考虑对按键事件进行某种修改,但我不确定如何去做。目前我正在使用ADDHANDLER,ADDRESSOF技术将这个特殊代码分配给特定字段,我想我可以对特定表单上的所有包含控件进行循环并分配按键代码,但是如果有办法做一次而不重复每个表格上的代码会很棒。任何提示都慷慨地接受了。感谢。
答案 0 :(得分:0)
正则表达式怎么样?提交时出现Stripping或converting to escape character?
是否可以传递一个数组,其中TextBox1是TextBox1,Textbox2等。显然,如果您只需要去除单引号,则需要编辑表达式。这适用于所有非字母字符。我对vb.net做的不多,但认为这可能会有所帮助。
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
StripNonAlphabetCharacters(TextBox1)
End Sub
Public Sub StripNonAlphabetCharacters(ByVal input As TextBox)
' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets)
Dim rx As New Regex("[^a-zA-Z]")
If (rx.IsMatch(input.Text)) Then
Dim startPosition As Integer = input.SelectionStart - 1
input.Text = rx.Replace(input.Text, "")
input.SelectionStart = startPosition
End If
End Sub
答案 1 :(得分:0)
最简单的解决方案是创建一个派生的TextBox并使用它代替标准文本框。
Public Class NoQuoteTextBox
Inherits TextBox
Public Sub New()
AddHandler MyBase.KeyPress, AddressOf Handler
End Sub
Public Sub Handler(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If e.KeyChar = "'" Then
e.Handled = True
End If
End Sub
End Class
构建项目,然后NoQuoteTextBox(或任何您决定调用的项目)将出现在设计器的工具箱中:
使用此新控件代替标准文本框,它将为您处理单引号。