我在文本框旁边有一个标签,该标签应该显示在文本框中键入的总数。
TEXTBOX INPUT:14 - > 0 - > 20 - > 0 - > 30标签显示:14 - > 14 - > 34 - > 34 - > 64
我已经克服了我期望的问题,将每个数字添加为输入并将每个数字添加为删除输入(使用退格键)。但是现在如果输入值超过1000,则每个退格键删除每个位置9的值,直到该数字回到1000以下。
INPUT:1000 DISPLAY:91 ||| INPUT:10000 DISPLAY:9892
我不知道为什么。如果有人能够弄清楚为什么超过1000的数字采取不同的行动,我会非常感谢帮助。
这是我的代码。
Private Sub HandleKeyPress(sender As Object, e As KeyPressEventArgs)
Me.KeyPressedUnicode = Asc(e.KeyChar)
End Sub
Private Sub HandleTextChanged(sender As Object, e As EventArgs)
Dim textboxText As Double = Val(Me.TB.Text)
Dim labelText As Double = Val(Me.LBL.Text)
Dim previousTextboxText As Double = 0
If (Me.TB.TextLength > 1) Then
previousTextboxText = Val(textboxText .ToString.Substring(0, Me.TB.TextLength - 1))
labelText = labelText - previousTextboxText
If KeyPressedUnicode = 8 Then
textboxText = (textboxText.ToString.Substring(0, 1))
previousTextboxText = 0
End If
ElseIf (Me.TB.TextLength <= 1 And KeyPressedUnicode = 8) Then
textboxText = 0
previousTextboxText = 0
End If
Me.LBL.Text = labelText + textboxText
End Sub
我可能忘记了几段代码,如果需要更多信息,请告诉我。
答案 0 :(得分:0)
您过度复杂的代码。部分问题在于,当您按下退格键时,您需要尝试使代码工作,您必须多次执行大量的退格键。如果您可以将代码更改为仅在按ENTER
时执行添加,则代码非常简单。
试试这个:
Private Sub HandleKeyPress(sender As Object, e As KeyPressEventArgs)
If Asc(e.KeyChar) = 13 Then
Me.LBL.Text = Val(Me.LBL.Text) + Val(Me.TB.Text)
End If
End Sub
如果你真的需要根据被击中的退格键添加值,请尝试:
Private Ready As Boolean = False
Private Sub HandleKeyPress(sender As Object, e As KeyPressEventArgs)
If Asc(e.KeyChar) = 8 Then
If Me.Ready Then
Me.LBL.Text = Val(Me.LBL.Text) + Val(Me.TB.Text)
Me.Ready = False
End If
Else
Me.Ready = True
End If
End Sub