【问题标题】:VB.Net - Specified Cast is not valid But Debugger showing valueVB.Net - 指定的转换无效但调试器显示值
【发布时间】:2018-05-10 16:08:44
【问题描述】:

我尝试运行的代码很简单。从Textbox 获取文本并通过MsgBox 显示。现在我可能已经这样做了一百万次,但我得到了一个奇怪的错误。代码是:

 Dim s As String = FromDateTEX.Text.ToString
 MsgBox(s)

我从第二行得到这个错误:

System.InvalidCastException: 'Specified cast is not valid.'

这是奇怪的部分:调试器显示s 的值是正确的。这是屏幕截图:

我在这里做错了什么?

编辑:

即使这段代码也会出现同样的错误:

 MsgBox(“hello”)

【问题讨论】:

  • 错误更可能发生在 above 行上,因为如果它是由s 变量引起的,那么它已经发生在:Dim s As String = FromDateTEX.Text.ToString。调试器并不总是 100% 准确。

标签: vb.net textbox msgbox


【解决方案1】:

上面一行,你访问了控件 DomainLUE 的属性 EditValue。如果 LUE 代表 LookUpEdit,那么您是否碰巧使用了来自 DevExpress 之类的公司的 3rd 方组件库?

如果是这样的话,FromDateTEX 是否也是这个库中的一个文本框(TextEdit)控件?在这种情况下,FromDateTEX 也可能公开一个 EditValue 属性。然后你可能会尝试将该值转换为字符串:

Dim s As String = FromDateTEX.EditValue?.ToString()

我不确定为什么 Text 属性在这里有问题。我希望它可以正常工作。很奇怪。

哦,顺便说一句,Visual Studio 有时会有点发疯。关闭 Visual Studio,可选择删除 .suo 文件,重新启动 Visual Studio 并重新打开解决方案也可能会有所帮助...

【讨论】:

  • 是的,两者都来自 DevExpress。但它与第三方组件无关。我什至尝试了'Msgbox(“hello”)'并得到了同样的错误。我真的没有想法了。
  • 很奇怪。它闻起来像 Visual Studio 的怪癖。在 Visual Studio 中加载解决方案之前,您是否尝试过从项目/解决方案中删除所有非必要文件,例如项目的 bin 和 obj 文件夹、项目用户文件和解决方案的 .suo 文件? (在尝试这样做之前,您可能需要创建解决方案的备份副本。)如果这没有帮助,我也没有想法......
【解决方案2】:

原来错误来自上述行。 LookupEditEditValue 实际上是 Short,它需要转换为 Integer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多