我的计算器上有一个很大的问题。
我有一个动态刷新文本框,所以在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中没有字符时,我可以停止删除和退格吗?我该怎么做?请帮忙!
答案 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