【问题标题】:Program crashing Visual Basic程序崩溃 Visual Basic
【发布时间】:2015-06-02 18:43:12
【问题描述】:

我正在使用 Visual Basic 进行编程,并且我创建了一个贷款计算器程序。我几乎所有的东西都是正确的,它也几乎按照我想要的方式工作和运行。

到目前为止,这是我的代码:

公开课表1

Private MinAmt As Decimal = 1000
Private MaxAmt As Decimal = 200000
Private Drate As Decimal
Private Loan As Decimal

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '== Load the Rate and Terms combo, then 'click Reset
    For r As Decimal = 0 To 0.1475 Step 0.0025
        '== Add each successive value to the combo list
        cbxRate.Items.Add(Format(r, "00.00%"))
    Next
    For t As Byte = 12 To 120 Step 6
        cbxTerm.Items.Add(Format(t, "00"))
    Next
    btnReset.PerformClick()
End Sub

Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click
    '== Set the defaults, and clear my prior answers
    cbxRate.Text = "06.00%"
    cbxTerm.Text = "36"
    tbxLoan.Text = "10,000"
    lblPayment.Text = ""
End Sub

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
    '== Validate the loan amount (number 1,000 - 200,000);

    If IsNumeric(tbxLoan.Text) AndAlso tbxLoan.Text >= MinAmt AndAlso tbxLoan.Text <= MaxAmt Then
        Loan = tbxLoan.Text
    Else
        MessageBox.Show("Error invalid value")
        tbxLoan.Focus()
        tbxLoan.SelectAll()
    End If

    '== Calculate Monthly Payment as PMT(monthly decimal rate, term in months, minus amount)
    lblPayment.Text = Pmt(cbxRate.Text.Replace("%", "") / 1200, cbxTerm.Text, -tbxLoan.Text)

    '== Display formatted as money: FormatCurrency(blah blah blah)
    lblPayment.Text = FormatCurrency(lblPayment.Text, 2)
End Sub

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
    Close()

End Sub

Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    '== Confirm he means it, else cancel attempt to close.
    If MessageBox.Show("Do you really want to exit?", "Close", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
    Else
        e.Cancel = True
    End If
End Sub

结束类

我试图发布我的程序的图片以便更容易,但显然我没有足够的声望点,但我会尽力解释。

我想消除有人不小心将字母作为值放入“输入贷款金额”空间的问题。现在,如果我在“输入贷款金额”空间中输入一个字母“U”,它会弹出一个错误(这是我想要的),但它也会使程序崩溃(我不想要的)。

希望这是有道理的。有人能指出我正确的方向吗?我还是 Visual Basic 的新手。

谢谢!

【问题讨论】:

    标签: vb.net vb6 basic


    【解决方案1】:

    这是因为您要继续计算输入是否有效。

    输入无效后使用Return退出函数。

    Else
        MessageBox.Show("Error invalid value")
        tbxLoan.Focus()
        tbxLoan.SelectAll()
        Return
    End If
    

    【讨论】:

    • 非常感谢,工作就像一个魅力。我应该看到一个愚蠢的简单错误。无论如何谢谢你
    • @LukeMcSloy,没问题.. 随时接受答案 + 点赞。
    【解决方案2】:

    或者只是将计算移到 If 语句中

    Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
    
        '== Validate the loan amount (number 1,000 - 200,000);
        If IsNumeric(tbxLoan.Text) AndAlso tbxLoan.Text >= MinAmt AndAlso tbxLoan.Text <= MaxAmt Then
    
            Loan = tbxLoan.Text
    
            '== Calculate Monthly Payment as PMT(monthly decimal rate, term in months, minus amount)
    
            lblPayment.Text = Pmt(cbxRate.Text.Replace("%", "") / 1200, cbxTerm.Text, -tbxLoan.Text)
    
            '== Display formatted as money: FormatCurrency(blah blah blah)
            lblPayment.Text = FormatCurrency(lblPayment.Text, 2)
    
        Else
            MessageBox.Show("Error invalid value")
            tbxLoan.Focus()
            tbxLoan.SelectAll()
        End If
    
    End Sub
    

    【讨论】:

      【解决方案3】:

      您仍在执行其余代码。您需要退出该块。使用 Return 语句..

      Else
          MessageBox.Show("Error invalid value")
          tbxLoan.Focus()
          tbxLoan.SelectAll()
          Return
      End If
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-11
        • 2022-01-10
        • 2015-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多