如何在输入框上接受连字符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
如何写连字符?
答案 0 :(得分:1)
最好创建自定义控件并在任何需要数字文本框的位置使用它 另外,对于数字限制的数量,我认为文本框有一个maxlength属性 可以通过以下链接回答您的问题
答案 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