vb.net-检查在Visual Basic中的文本框中输入的数值

我正在为我的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'.    

任何建议将不胜感激.

最佳答案
一种更正确的方法是使用Int32或Double类中提供的TryParse方法

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

您还可以删除测试空文本框的代码.

TryParse方法需要两个参数,第一个是可以转换的字符串,第二个参数是在可能的情况下接收转换结果的变量.如果无法执行转换,则该函数返回false.

有很多理由更喜欢Double.TryParse而不是IsNumeric.

第一个原因是,使用TryParse您还可以获得转换结果,而使用IsNumeric则必须在检查之后进行转换.

第二个原因是您可以给IsNumeric任何您想要的对象(例如,还有一个Button),并且它接受它.您永远不会在编译时发现这种错误.相反,使用TryParse,您只能将字符串作为其第一个参数传递.

转载注明原文:vb.net-检查在Visual Basic中的文本框中输入的数值 - 代码日志