附加信息:从字符串“”到“Double”类型的转换无效。 Vb.net

时间:2017-06-11 11:54:09

标签: vb.net

我正在研究vb.net上的一个小程序,问题是我有两个文本框Names和Age(它们是数组)。并且我正在努力尝试使它如果输入一个名字并且年龄不是它将会出现“请输入年龄”,而不向数组添加任何内容,这些已尝试但仍然会出现“附加信息:从字符串“”到“Double”类型的转换无效“。我把我的代码放在下面看你是否能看到任何问题。

PS我只是个初学者。谢谢你 Image of what I'm seeing

'存储在数组中'         昏暗的年龄为字符串         Dim Surnames As String

    Surnames = txtNames.Text
    Ages = txtAge.Text


    If txtNames.Text = "" Then

        MsgBox("Enter Name ")
        txtNames.Focus()
        SystemValueAge = SystemValueAge - 1
        SystemValueName = SystemValueName - 1
        txtNames.Focus()

    ElseIf Ages < 1 Or Ages > 100 Then

        MsgBox("Please Enter Valid Age")

        SystemValueAge = SystemValueAge - 1
        SystemValueName = SystemValueName - 1
        txtAge.Focus()

    ElseIf txtAge.Text = "" Then

        MsgBox("Enter Age")
        SystemValueAge = SystemValueAge - 1
        SystemValueName = SystemValueName - 1
        txtAge.Focus()


    End If

1 个答案:

答案 0 :(得分:0)

在执行比较之前,您需要将txtAge.Text转换为整数。另外,请确保将ElseIf txtAge.Text = "" Then放在Convert.toInt32(Ages) < 1 Or Convert.toInt32(Ages) > 100之前,如下所示:

ElseIf txtAge.Text = "" Then
    MsgBox("Enter Age")
    SystemValueAge = SystemValueAge - 1
    SystemValueName = SystemValueName - 1
    txtAge.Focus()

ElseIf Convert.toInt32(Ages) < 1 Or Convert.toInt32(Ages) > 100 Then
    MsgBox("Please Enter Valid Age")
    SystemValueAge = SystemValueAge - 1
    SystemValueName = SystemValueName - 1
    txtAge.Focus()
End If

首先需要插入ElseIf txtAge.Text = ""的原因是因为如果字符串为空,那么控件将不会进入以下ElseIf语句,因此您不会获得FormatException例外。

作为旁注,您应该使用ElseIf String.IsNullOrEmpty(txtAge.Text)而不是ElseIf txtAge.Text = ""