Visual Basic - 从不断变化的输入中不断向总计添加输入

时间:2014-02-20 01:42:12

标签: vb.net visual-studio-2013 addition

我在文本框旁边有一个标签,该标签应该显示在文本框中键入的总数。

  

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

我可能忘记了几段代码,如果需要更多信息,请告诉我。

1 个答案:

答案 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