2016-05-17 51 views
0

我正在爲學校計算您在住院期間的總計的視覺基礎項目。它在大多數情況下都能正常工作,但是當輸入一個負數時,我應該會收到錯誤消息,但我沒有收到該消息。這裏是編碼,因爲我有它現在:醫院費用Visual Basic

Public Class Form1 

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

End Sub 

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click 
    'clear form 
    txtLab.Clear() 
    txtMedication.Clear() 
    txtPhysical.Clear() 
    txtStay.Clear() 
    txtSurgical.Clear() 
    txtStay.Focus() 
End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    'class level declaration 
    Const DayRate As Decimal = 350D 'cost per day 


    'declare variables 
    Dim Physical As Decimal 
    Dim Surgical As Decimal 
    Dim Lab As Decimal 
    Dim Medication As Decimal 
    Dim Stay As Decimal 
    Try 
     'Copy the scores into the variables 
     Stay = CDec(txtStay.Text) * DayRate 
     Medication = CDec(txtMedication.Text) 
     Surgical = CDec(txtSurgical.Text) 
     Lab = CDec(txtLab.Text) 
     Physical = CDec(txtPhysical.Text) 
    Catch 
     MessageBox.Show("Please enter numeric values") 
     Return 

     'Find out if box enteries are negative or not 
     If Convert.ToDecimal(Lab) < 0 Then 
      MessageBox.Show("No Negative Numbers", "Try Agian") 
      Return 
      txtLab.SelectAll() 
     ElseIf Convert.ToDecimal(Medication) < 0 Then 
      MessageBox.Show("No Negative Numbers", "Try Agian") 
      Return 
      txtMedication.SelectAll() 
     ElseIf Convert.ToDecimal(Surgical) < 0 Then 
      MessageBox.Show("No Negative Numbers", "Try Agian") 
      Return 
      txtSurgical.SelectAll() 
     ElseIf Convert.ToDecimal(Physical) < 0 Then 
      MessageBox.Show("No Negative Numbers", "Try Agian") 
      Return 
      txtPhysical.SelectAll() 
     ElseIf Convert.ToDecimal(Stay) < 0 Then 
      MessageBox.Show("No Negative Numbers", "Try Agian") 
      Return 
      txtStay.SelectAll() 
     End If 
    End Try 
End Sub 
Function CalcStayCharges() As Decimal 
    CalcStayCharges = (CDec(txtStay.Text) * 350) 
End Function 
Function CalcMiscCharges() As Decimal 
    CalcMiscCharges = CDec(txtMedication.Text) + CDec(txtLab.Text) + CDec(txtPhysical.Text) + CDec(txtSurgical.Text) 
End Function 
Function CalctotalCharges() As Decimal 
    CalctotalCharges = (CalcStayCharges() + CalcMiscCharges()) 
End Function 

Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click 
    'calculates total of stay 
    Dim decTotal As Decimal 

    decTotal = CalctotalCharges() 

    lblTotal.Text = decTotal.ToString("c") 
End Sub 
End Class 
+0

即使它們看起來一樣,VBA和VB.Net也是兩種截然不同的語言。請用適當的標籤標記您的問題,以便正確的人員看到它 – litelite

+1

檢查負數的代碼位於Form's Load事件處理程序中;它將在表單加載時以及在TextBoxes中使用類型之前執行一次。您需要在單擊「計算」按鈕時驗證文本框的內容。 – Blackwood

+0

非常感謝。這就像一個魅力 –

回答

1

抓住子句,因爲沒有發生異常不執行所擁有的代碼。您應該移動您的If .. Else ..陳述在Catch條款之前。