2015-06-02 1 views
1

Я программирую на Visual Basic, и у меня есть программа, которая является калькулятором ссуды. У меня в значительной степени все правильно, и оно работает и работает почти так, как я тоже хочу.Программа crashing Visual Basic

Вот мой код до сих пор:

Public Class Form1

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 

End Class

Я попытался опубликовать фотографию моей программы, так что может быть проще, но, видимо, я дон «У меня достаточно очков репутации, но я стараюсь объяснить лучшее, что могу.

Я хотел бы устранить проблему, когда кто-то случайно помещал письмо в качестве значения в поле «Введите сумму кредита». Прямо сейчас, если бы я должен был положить букву «U» в поле «Введите сумму кредита», она выведет ошибку (это то, что я хочу), но также выломит программу (чего я не хочу).

Надеюсь, это имеет смысл. Кто-нибудь сможет указать мне в правильном направлении? Я все еще новичок в Visual Basic.

Спасибо!

ответ

1

Это потому, что вы продолжаете вычислять независимо от того, был ли вход действительным.

Выход из функции с помощью функции «Возврат после ввода» недействителен.

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

Большое спасибо, работал как шарм. Скажите, что это глупая простая ошибка. в любом случае спасибо –

+0

@LukeMcSloy, не проблема .. Не стесняйтесь принять ответ + Upvote. –

0

или просто переместить расчеты внутри заявление, если

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 
0

Вы еще выполняющем остальную часть кода. Вам нужно выйти из этого блока. Используйте заявление о возврате.

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