【问题标题】:Conversion from string "" to type 'Double' is not valid using TryParse Method使用 TryParse 方法从字符串“”到类型“Double”的转换无效
【发布时间】:2013-09-21 01:10:37
【问题描述】:

我在 VB.Net 中有一个简单的加法程序,我正在尝试测试文本框是否只输入数字而不输入任何字母。我需要使用 TryParse 方法,但我无法弄清楚我仍然收到此错误。请帮忙

Public Class perrySolutionForm
Dim numberOne As Double
Dim numberTwo As Double

Public Function sum(ByRef numberOne As Double, ByRef numberTwo As Double)
    sum = Val(numberOne) + Val(numberTwo)
End Function

Public Function difference(ByRef numberOne As Double, numberTwo As Double)     

difference = Val(numberOne) - Val(numberTwo)

End Function

Private Sub sumButton_Click(sender As Object, e As EventArgs) Handles sumButton.Click
    If numberOneInput.Text = "" Then
        MessageBox.Show("Both fields must be filled out.")
        If Double.TryParse(numberOneInput.Text, numberOne) Then
            MessageBox.Show("Success")
            'numberOne has a Double value
        Else
            MessageBox.Show("Failure")
            'numberOne = Nothing
        End If
    Else
        outputLabel.Text = sum(numberOne, numberTwo)
    End If
End Sub

Private Sub numberOneInput_TextChanged(sender As Object, e As EventArgs) Handles numberOneInput.TextChanged
    numberOne = numberOneInput.Text

End Sub

Private Sub numberTwoInput_TextChanged(sender As Object, e As EventArgs) Handles numberTwoInput.TextChanged
    numberTwo = numberTwoInput.Text

End Sub

【问题讨论】:

  • 使用Val退出,这是遗留的遗留代码。请在使用之前转换您的类型 - 即 numberOne = numberOneInput.Text = 错误编码。
  • 你能举个例子吗?这是我在 VB.Net 的第一个学期,所以我指的是给定的教科书。谢谢
  • 将 Option Strict On 放在源代码文件的顶部并重新编译。修复编译器现在告诉你的错误。
  • 这就是Double.TryParse 为你做的事情,如果 poss,它会转换你的字符串值。
  • Option Strict On,确实非常好。

标签: vb.net tryparse


【解决方案1】:

这就是您使用 TryParse 的方式:

If Double.TryParse(numberOneInput.Text, numberOne) Then
  'code for a success
  'numberOne has a Double value
Else
  'code for a failure
  'numberOne = Nothing
End If

如果文本为空,则结束代码块:

If String.IsNullOrWhiteSpace(numberOneInput.Text) Then 
   MessageBox.Show("Value is incorrect format")
   Exit Sub
End If

【讨论】:

  • 所以我已经尝试过了,第二次我在 numberOneInput 文本框中输入了一个字母,它仍然显示“从字符串“转换为类型‘双’无效”。我更新了上面的代码。谢谢
  • 这个函数接受一个空字符串,但是会跳转到 if 语句的Else 部分,因为它失败了。你能告诉我你说的是哪一行代码吗?
  • 它抱怨的那一行是“numberOne = numberOneInput.Text”。至少那是程序中断后突出显示的内容。我应该注意到我没有收到任何消息框,程序只是呕吐
  • 对,这就是为什么您需要在将值分配给错误的类型之前对其进行转换。
  • 我仍然对如何在分配值之前进行转换感到困惑。使用“Option Explicit On”后,它更改了“numberOne = numberOneInput.Text”。 TO“numberOne = CDbl(numberOneInput.Text)”。你指的是这个吗?因为程序还在呕吐。
猜你喜欢
  • 2011-07-30
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
相关资源
最近更新 更多