Vb.net 在文本框中仅允许单个逗号

Vb.net 在文本框中仅允许单个逗号,vb.net,vb.net-2010,Vb.net,Vb.net 2010,我正在开发vb.net-windows应用程序 我有一个文本框,用户应该在其中输入数据。 我做了一些验证,比如,用户只能输入数字、字母和逗号。 (无其他符号。) 它工作正常,但我想限制只插入一个逗号,而不是多插入一个 如何做到这一点 我有下面的文本框按键事件代码 ReadOnly ValidChars As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789," Private Sub txtNe

我正在开发vb.net-windows应用程序

我有一个文本框,用户应该在其中输入数据。 我做了一些验证,比如,用户只能输入数字、字母和逗号。 (无其他符号。) 它工作正常,但我想限制只插入一个逗号,而不是多插入一个

如何做到这一点

我有下面的文本框按键事件代码

 ReadOnly ValidChars As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,"

 Private Sub txtNewFlatName_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtNewFlatName.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 Chr(22) ' CTRL+V is pressed
                ' Paste clipboard content only if contains valid characters
                e.Handled = If(Clipboard.GetText().All(Function(c) ValidChars.Contains(c)), False, True)


            Case Else ' Other key is pressed
                e.Handled = Not (ValidChars.IndexOf(e.KeyChar) > -1)


        End Select
    End Sub

在其他情况下,您可以使用此处描述的方法之一计算文本框中出现的“,”:或者您可以在类级别保留一个标志,并测试它是否打开(表示按下了“,”键)。

您将希望从按键事件开始工作

分析是否按下逗号,如果是

然后将文本框作为字符串读取

使用子字符串循环读取每个字符,同时计算当前使用的

如果存在,则按下该键以防止进一步输入

另外,您可能希望使用Beep()来告诉他们这是不可接受的

希望对你有帮助