【问题标题】:System.InvalidCastException when textboxes are empty文本框为空时的 System.InvalidCastException
【发布时间】:2015-06-15 10:51:44
【问题描述】:

当我在第一个文本框中输入,而其他文本框为空时,我收到此错误:

Microsoft.VisualBasic.dll 中出现“System.InvalidCastException”类型的未处理异常”

Public Class myProject_P2

Public Sub CostPerKWH_TextChanged(sender As Object, e As EventArgs) Handles CostPerKWH.TextChanged
    Dim CostPerkwh_Value As Integer = CostPerKWH.Text
    Dim Appliancekwh_Value As Integer = ApplianceKWH.Text
    Dim HourPerDay_Value As Integer = HoursPerDay.Text
    Dim EnergyConsumption_Value As Integer = EnergyConsumptio.Text

    EnergyConsumption_Value = CostPerkwh_Value * Appliancekwh_Value * HourPerDay_Value
End Sub

End Class

【问题讨论】:

  • 当您在第一个文本框输入而另一个文本框为空时出现错误,对吗?
  • 感谢您的快速回复。是的,那是我收到错误消息的时候。
  • 在下面查看我的答案,如果它有效,请告诉我
  • Option Strict On 添加到代码文件的顶部。这将极大地帮助你。这条线和其他类似的线是错误的:Dim Appliancekwh_Value As Integer = ApplianceKWH.Text。您正在尝试将 String 分配给 Integer 变量。如果你在文本框中输入了任何不是整数的东西,你的程序就会崩溃。
  • @ChrisDunaway 感谢您的提示!我添加了“Option Strict On”,这很有帮助!

标签: vb.net


【解决方案1】:

我真的不知道您的程序流程,但如果您的问题只是问题中所述的错误System.InvalidCastException,那么请尝试我在下面粘贴的代码。

在其他任何事情之前, 它引发该错误的原因可能是您在第一个字段上键入而将其他字段留空,您的第一个字段被编程为在文本更改时,其他字段的值字段将被传递或分配给整数变量。由于它们是空的,因此传递的值是"" 值或empty string 值。分配给整数的字符串值肯定会导致错误。在传递值之前尝试验证,我建议不要将赋值放在你的文本更改中,而是尝试添加一个button 并在那里添加代码。单击按钮后,过程如下:

Dim CostPerkwh_Value As Integer
Dim Appliancekwh_Value As Integer
Dim HourPerDay_Value As Integer
Dim EnergyConsumption_Value As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If IsNumeric(CostPerKWH.Text) And IsNumeric(ApplianceKWH.Text) _
        And IsNumeric(HoursPerDay.Text) And IsNumeric(EnergyConsumptio.Text) Then
        CostPerkwh_Value = CostPerKWH.Text
        Appliancekwh_Value = ApplianceKWH.Text
        HourPerDay_Value = HoursPerDay.Text
        EnergyConsumption_Value = EnergyConsumptio.Text

        EnergyConsumption_Value = CostPerkwh_Value * Appliancekwh_Value * HourPerDay_Value
        MsgBox(EnergyConsumption_Value)
    Else
        MsgBox("Some inputs are not in numeric.")
    End If
End Sub

【讨论】:

  • MAC 感谢您的帮助。您的代码摆脱了错误。现在我在让 msgBox 显示计算值时遇到了一些麻烦。如果我在输入字段中输入整数并单击 Button1,我会收到 Else 消息。任何可能出现问题的想法。
  • 您是否碰巧只有 3 个文本框?因为在这个示例中,我使用了 4
  • 您是否有 EnergyConsumtio 文本框?
  • 啊哈!是的,我知道发生了什么。我试图让标签显示计算值将其更改为文本框,现在它可以工作了。非常感谢您的帮助。
【解决方案2】:

另一种解决方案是:

if TryCast(Textboxt1.text, integer) then
   ' do something
end if

MSDN TryCast Documentation

【讨论】:

    猜你喜欢
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多