【问题标题】:VB.net: Stop sending delete and backspace keystrokes if there is no text in textbox WPFVB.net:如果文本框 WPF 中没有文本,则停止发送删除和退格键击
【发布时间】:2015-07-07 06:05:14
【问题描述】:

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

我有一个动态刷新文本框,所以在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 中没有字符时,我可以停止删除和退格吗?我该怎么做?请帮忙!

【问题讨论】:

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


    【解决方案1】:

    也许您可以使用验证?

    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
    

    【讨论】:

    • 'event' 验证 textbox.validating 找不到。有什么帮助吗?
    【解决方案2】:

    我是这样解决的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 2013-03-15
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多