我正在为我的 Visual Basic 课程编写一个程序,并且有一个简单的问题。我们被鼓励做的一件事是检查以确保文本框中输入的数量实际上是数字。我们的教授建议使用 IsNumeric 来执行此检查,但我遇到了一些麻烦。在他将其添加到说明中之前,我已经编写了很多代码,因此不确定如何将其集成到我已有的代码中。
该程序的主要目的是允许用户将配料从一个列表框添加到食谱列表框,在文本框中输入每种选定配料的数量,并计算食谱的总卡路里。按照我现在编写代码的方式,IsNumeric 是嵌套 if 语句的一部分,在该语句的开头我将开始将选定的成分添加到配方列表框。我不确定这是否是正确的地方。
这是我到目前为止编写的代码。
Public Class Form1
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Dim i As Integer = lstIngredients.SelectedIndex
Dim Quantity As Double
Dim intCount As Integer = 0
If Trim(txtQuantity.Text = "") Then
Quantity = 1
Else
Quantity = Me.txtQuantity.Text
End If
If txtQuantity.Text Is IsNumeric() Then
If intCount < Quantity Then
lstRecipe.Items.Add(Quantity & " " & lstIngredients.Text)
intCount += 1
End If
Else
MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
End If
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
lstRecipe.Items.Clear()
txtQuantity.Clear()
txtAnswer.Clear()
End Sub
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
End Sub
End Class
另外,这是当我尝试运行该程序时收到的错误。
Error 1 Argument not specified for parameter 'Expression' of 'Public Function IsNumeric(Expression As Object) As Boolean'.
任何建议将不胜感激。
更正确的方法是使用TryParse
方法可在Int32
or Double
class
If Double.TryParse(txtQuantity.Text, Quantity) Then
If intCount < Quantity Then
lstRecipe.Items.Add(Quantity & " " & lstIngredients.Text)
intCount += 1
End If
Else
MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
End If
您还可以删除测试空文本框的代码。
The TryParse
方法需要两个参数,第一个参数是可以转换的字符串,第二个参数是接收转换结果的变量(如果可能)。如果转换无法执行,则函数返回 false。
有很多理由选择Double.TryParse代替IsNumeric
.
第一个原因是TryParse
您还可以获得转换的结果IsNumeric
您必须在检查后进行转换。
第二个原因是你可以给IsNumeric
无论你想要什么对象(例如还有一个按钮),它都会接受它。在编译时你永远不会发现这种错误。相反,与TryParse
,您只能传递一个字符串作为其第一个参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)