2016-05-17 10 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は、同じように見えても2つの異なる言語です。適切な人々にそれが表示されるように適切なタグで質問をタグ付けしてください。 – litelite

+1

負の数をチェックするコードは、FormのLoadイベントハンドラにあります。フォームがロードされてから使用する前に、テキストボックス内に何かが入力される前に、一度実行されます。 Calculateボタンをクリックした時点でTextBoxの内容を検証する必要があります。 – Blackwood

+0

ありがとうございました。それは魅力のように働いた –

答えて

1

は例外が発生しないので、あなたがキャッチ句を持っているコードが実行されません。 もしも..の文をのキャッチの前に移動してください。