【问题标题】:Getting error that Conversion from String to Long is Not Valid in VB.net在 VB.net 中出现从 String 到 Long 的转换无效的错误
【发布时间】:2014-11-22 21:07:08
【问题描述】:

我正在尝试创建一个错误处理程序,但遇到了错误。由于我的英语有限,我不知道如何解释问题的细节。我希望你看到我的代码后可能会明白。

我看过这个,[Conversion from string "" to long is not valid 并认为问题可能出在“&”和“Or”上,但可能有所不同。

我的代码如下。请注意,Date1.text、Date2.text 等是datetimepicker

Dim No1, No2, No3 No4 As String
    No1 = Date1.Text
    No2 = Date2.Text
    No3 = Date3.Text
    No4 = Date4.Text
Select Case CmbNumber.Text
    Case "1 (ONE)"
        No2 = "-"
        No3 = "-"
        No4 = "-"
    Case "2 (TWO)"
        No1 = "-"
        No3 = "-"
        No4 = "-"
    Case "3 (THREE)"
        No1 = "-"
        No2 = "-"
        No4 = "-"
    Case "4 (FOUR)"
        No1 = "-"
        No2 = "-"
        No3 = "-"
End Select
    If CmbNumber.Text = "4 (FOUR)" Then
        If No1 Or No2 Or No3 = No4 Then 'ERROR Conversion From String to Long
            MsgBox("Not allowed the same date", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "ERROR")
            Exit Sub
        End If
    End If

【问题讨论】:

  • @sjoy 虽然我觉得您的编辑很有用,但我认为您应该留下一个 comment 关于“陷阱”作为“错误处理程序”而不是更改它问题,并且要完成编辑,您应该格式化代码。 (我试图撤消我的编辑拒绝,但我做不到。)
  • @AndrewMorton 未来编辑的有用信息。 (一分钟后)现在不要完全跟随。我的修改似乎已应用。
  • @AndrewMorton 没关系。我找到了批准并立即获得。:)

标签: vb.net winforms


【解决方案1】:

您需要了解operator 在计算机编程中的含义以及Operator Precedence in Visual Basic

由此,您可以确定计算机将No1 Or No2 Or No3 = No4 视为No1 Or No2 Or (No3 = No4)(括号中的项目,即首先评估()),这不是您想要的。

相反,你想要No1 = No4 Or No2 = No4 Or No3 = No4

现在,当您使用 Or 时,它会评估每个条件,即使它在数学上不是必需的。引入了一个新的运算符 OrElse,它只进行所需的评估,因此您的代码使用 No1 = No4 OrElse No2 = No4 OrElse No3 = No4 会更高效。

顺便说一句,您可以通过仅在必要时设置值来缩短代码:

Dim No1 As String = "-"
Dim No2 As String = "-"
Dim No3 As String = "-"
Dim No4 As String = "-"
Select Case CmbNumber.Text
    Case "1 (ONE)"
        No1 = Date1.Text
    Case "2 (TWO)"
        No2 = Date2.Text
    Case "3 (THREE)"
        No3 = Date3.Text
    Case "4 (FOUR)"
        No4 = Date4.Text
End Select

【讨论】:

  • 实际上我尝试过使用 OrElse 运算符但我没有成功,但在右手它可以完成..这就是我一直在寻找的..这是工作..谢谢..
【解决方案2】:

表达式If No1 Or No2 Or No3 = No4 假定No1No2 的类型为Boolean。您不能将Or 运算符应用于非布尔值。

【讨论】:

  • 所以我的问题没有答案..或者你愿意提供另一种方式..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2017-11-29
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多