我正在努力使用我的TryParse方法。该计划是计算总降雨量和平均降雨量。用户以英寸为单位输入每个月。总计是准确的,但单击计算时会弹出错误消息“输入数值”。该程序还用符号或字母计算,我将如何在此时停止它。
Public Class Korszun
Private Sub Korszun_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MessageBox.Show("Please enter each month's rainfall average (ex: 1.11 inches)")
End Sub
Private Sub txtJuly_TextChanged(sender As Object, e As EventArgs) Handles txtJuly.TextChanged
End Sub
Private Sub txtOctober_TextChanged(sender As Object, e As EventArgs) Handles txtOctober.TextChanged
End Sub
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'declare the variables
Dim intCount As Integer = 0
Dim dblAverageRainfall As Double
Dim dblTotalRainfall As Double
Dim dblInches As Double
'create txtbox variable
'go through each TextBox control in the Groupbox and add them all up
For Each txtBox As TextBox In Me.GroupBox1.Controls.OfType(Of TextBox)()
If Not Double.TryParse(txtBox.Text, dblInches) Then
MessageBox.Show("Please enter numerical values only.")
ElseIf CDbl(txtBox.Text) < 0 Then
MessageBox.Show("Please enter all positive numbers.")
ElseIf TypeOf txtBox Is TextBox Then
'add the total value of rainfall and put it in the decTotalRainfall variable
dblTotalRainfall += CDbl(txtBox.Text)
End If
Next
'get the average
dblAverageRainfall = dblTotalRainfall / 12
'show the results in the labels
lblTotal.Text = dblTotalRainfall.ToString("n2")
lblAverage.Text = dblAverageRainfall.ToString("n5")
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
'Clear the Textboxes
txtJanuary.Clear()
txtFebruary.Clear()
txtMarch.Clear()
txtApril.Clear()
txtMay.Clear()
txtJune.Clear()
txtJuly.Clear()
txtAugust.Clear()
txtSeptember.Clear()
txtOctober.Clear()
txtNovember.Clear()
txtDecember.Clear()
lblAverage.Clear()
lblTotal.Clear()
'Set focus
txtJanuary.Focus()
End Sub
Private Sub GroupBox1_Enter(sender As Object, e As EventArgs) Handles GroupBox1.Enter
End Sub
Private Sub txtAverage_TextChanged(sender As Object, e As EventArgs) Handles lblAverage.TextChanged
End Sub
End Class