VB.net:如果文本框WPF中没有文本,则停止发送删除和退格键击

时间:2015-07-07 06:05:15

标签: wpf vb.net visual-studio crash keystroke

我的计算器上有一个很大的问题。

我有一个动态刷新文本框,所以在textbox_change上,它会自动点击回车按钮。

Private Sub textBox_TextChanged(sender As Object, e As TextChangedEventArgs) Handles textBox.TextChanged
    If IsNumeric(textBox.Text) = False Then
        button.IsEnabled = False
    Else
        button.IsEnabled = True
    End If
    button_Click(sender, e)



End Sub

因为我的按钮会在发送整数的任何其他按键时中断,每当用户发送退格或删除文本框中没有其他字符时,程序就会崩溃。

我的按钮代码会在整数以及button_click textbox.clear()和键击(退格,删除)以外的任何内容上崩溃,当文本框中没有整数时发送,因为我认为它会检测到像其他一些删除键击字符串而不是UInt64。

    If IsNumeric(textBox.Text) Then
        b = CDbl(textBox.Text)
    Else
        Await Me.ShowMessageAsync("Error", "Please input a number.", MessageDialogStyle.Affirmative)
    End If

    Dim Input As ULong
    Input = Convert.ToUInt64(textBox.Text)
    textBox12.Text = (FormatNumber(Input))

    Dim m As Decimal
    Dim t As Decimal
    Dim add As Integer

    If b > 100000000 Then
        t = 0.06
    ElseIf b > 25000000 Then
        t = 0.05
    ElseIf b > 10000000 Then
        t = 0.04
    ElseIf b > 5000000 Then
        t = 0.03
    ElseIf b > 1000000 Then
        t = 0.018
    ElseIf b > 100000 Then
        t = 0.008
    End If



    m = b - (b * t)
    add = b - m
    textBox1.Text = add
    textBox2.Text = Int(m)

那我该如何预防呢?因为现在没有文字可以清除而不是非常谨慎。它将崩溃在mscorlib.dll中发生未处理的类型'System.FormatException'的异常。 当textbox.text中没有字符时,我可以停止删除和退格吗?我该怎么做?请帮忙!

2 个答案:

答案 0 :(得分:0)

也许您可以使用验证?

Private Sub TextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox.Validating
    If Not IsNumeric(TextBox.Text) Then
        e.Cancel = True
    Else
        Button_Click(sender, e)
    End If
End Sub

答案 1 :(得分:0)

我是这样解决的:

If Textbox.Text = "" Then VariableName = AValue Else VariableName = Textbox.Text