数值和连字符“ - ”inputbox vb.net

时间:2013-05-22 02:10:22

标签: vb.net handle

如何在输入框上接受连字符char和数值?

我有

Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles inputBox_1.KeyDown
        Select Case e.KeyCode
            Case Keys.D0 To Keys.D9, Keys.NumPad0 To Keys.NumPad9, _
                 Keys.Back, Keys.Delete, Keys.Left, Keys.Right
                If e.Shift = True Then
                    e.SuppressKeyPress = True
                    Exit Sub
                End If
                e.SuppressKeyPress = False
            Case Else
                e.SuppressKeyPress = True
        End Select
    End Sub

但是当我在行

中输入“ - ”字符时它失败了
Keys.D0 To Keys.D9, Keys.NumPad0 To Keys.NumPad9, _
                     Keys.Back, Keys.Delete, Keys.Left, Keys.Right

如何写连字符?

2 个答案:

答案 0 :(得分:1)

最好创建自定义控件并在任何需要数字文本框的位置使用它 另外,对于数字限制的数量,我认为文本框有一个maxlength属性 可以通过以下链接回答您的问题

link

答案 1 :(得分:1)

这是一个解决方案。我希望它有点冗长,你可以通过将文本框文本属性分成单个字符并检查所有内容来加快速度(但是如果你想让你的代码将字母放入文本框中那么就会这样做这一点)。

无论如何,我测试了它并且它工作正常,它在秒表上显示为0ms,因此它不应该为用户提供任何明显的减速。请注意,有一个全局布尔变量。

    Dim boo As Boolean = True

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    Dim temp As String
    Dim tempchr As Integer
    If boo = True Then
        boo = False

        temp = Mid(TextBox1.Text, TextBox1.SelectionStart, 1)
        tempchr = Asc(temp)

        If tempchr < 48 Or tempchr > 58 Then
            If tempchr = 45 Then

            Else
                If TextBox1.SelectionStart - 1 > 0 Then
                    If TextBox1.SelectionStart = TextBox1.TextLength Then
                        TextBox1.Text = Mid(TextBox1.Text, 1, TextBox1.SelectionStart - 1)
                    Else
                        TextBox1.Text = Mid(TextBox1.Text, 1, TextBox1.SelectionStart - 1) & Mid(TextBox1.Text, TextBox1.SelectionStart + 1)
                    End If

                Else
                    If TextBox1.SelectionStart = TextBox1.TextLength Then
                        TextBox1.Text = ""
                    Else
                        TextBox1.Text = Mid(TextBox1.Text, TextBox1.SelectionStart + 1)
                    End If

                End If

            End If
        Else
            boo = True
        End If

    Else
        boo = True
    End If
    TextBox1.SelectionStart = TextBox1.TextLength
End Sub