我有一个带有菜单表单和其他几个的Visual Studio 2015 Windows窗体程序。有问题的菜单按钮的代码如下所示:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Visible = False
Form1.Show()
End Sub
按下此按钮时,将加载表单1。在Form 1中,load事件是以下For循环:
For i As Integer = 1 To 10
If x_DataTable.Rows(0)(i.ToString()) <> "" Then
Me.Controls(("txt" & (i)).ToString()).Text = x_DataTable.Rows(0)(i.ToString())
Dim s As String = Me.Controls(("txt" & (i)).ToString()).Text.Trim()
If Convert.ToInt32(s.Substring(s.Length - 2)) < (m_DataTable.Rows(0)("Limit")) Then
Me.Controls(("txt" & (i)).ToString()).BackColor = Color.IndianRed
End If
End If
Next
每次调试器遇到以&#34开头的行;如果转换为.ToInt32&#34; ,它将退出for循环和load事件子,并向后跳转到Form1上面菜单代码中的.Show()语句。知道是什么原因导致它或如何使它正常执行代码吗?
答案 0 :(得分:0)
请检查Convert.ToInt32(s.Substring(s.Length - 2))
,(m_DataTable.Rows(0) ("Limit"))
是有效的整数
答案 1 :(得分:0)
好的,我想我已经明白了。 &#34;限制&#34;第0行的列为null,因此无法执行该行。仍然不确定为什么它没有显示任何错误消息,但只是向后跳过。
答案 2 :(得分:0)
听起来像程序集和源代码不同步。您是否更改了配置(Release | Debug)或者未构建,或构建到错误的位置?
答案 3 :(得分:0)
当连接调试器时,{x}系统上的Form.Load
事件在x64系统上有一些奇怪的异常处理行为。当在x64版本的Windows上运行的x86进程中未处理异常时,该函数基本上被中止,并且该异常被wow64子系统吃掉。在调用Load
之前,执行将在堆栈的最后一个.net代码处继续执行。
有关详细说明,请参阅this answer。