0

我在这里有一个表单加载子例程,问题是程序执行第一个(即LoadProgrammes())然后跳过子例程的其余部分。子程序有一些东西LoadProgrammes()使“表单加载”的其余部分不会被调用。

也是如此ListActiveClasses()。只有DisplayGroups()被正确调用并调用下一行代码。

我真的不知道为什么,而且很难找到谷歌的解决方案。提前感谢任何可以提供帮助的人。

Private Sub frmEnroll_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    LoadProgrammes()
    ListActiveClasses()
    DisplayGroups()

End Sub

Private Sub LoadProgrammes()
    Dim strLoadSQL As String
    Dim dsLoad As New DataSet
    Dim daLoad As OleDb.OleDbDataAdapter

    Using con As New OleDbConnection(My.Settings.ConnectionPath)

        strLoadSQL = "SELECT Programme FROM Programmes"
        daLoad = New OleDb.OleDbDataAdapter(strLoadSQL, con)
        daLoad.Fill(dsLoad, "LoadProgrammes")

        'Add items to the combobox
        For i = 0 To dsLoad.Tables("LoadProgrammes").Rows.Count
            cmbProgramme.Items.Add(dsLoad.Tables("LoadProgrammes").Rows(i).Item(0))
        Next

    End Using
End Sub
4

1 回答 1

2

我所看到的是,在某些事件处理程序(可能像您的 Form.Load 处理程序)中,执行期间抛出的任何异常都将被简单地吞下并忽略。您很可能在 OleDb 代码中遇到了一些异常,这导致它退出。

我建议用Try...Catch 块包装所有 _Load 子例程,并手动打印出异常,或调用Debugger.Break

您是否尝试过单步执行代码?我建议您在 的开头设置一个断点frmEnroll_Load,然后开始单步执行,直到出现问题,或者代码继续运行(如果异常被吞没,您会看到这一点。)


相关问题/页面:

于 2012-07-26T04:15:19.323 回答