Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net WIndows窗体窗口加载方法未完成_Vb.net_Winforms_Sqlite - Fatal编程技术网

Vb.net WIndows窗体窗口加载方法未完成

Vb.net WIndows窗体窗口加载方法未完成,vb.net,winforms,sqlite,Vb.net,Winforms,Sqlite,因此,在我的windowonload方法中,我使用从数据库检索的值预先填充网格。以下是窗口加载的方法: Private Sub winMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ''#Load Grid Dim dt As New DataTable With dt .Columns.Add

因此,在我的windowonload方法中,我使用从数据库检索的值预先填充网格。以下是窗口加载的方法:

Private Sub winMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''#Load Grid
        Dim dt As New DataTable
        With dt
            .Columns.Add("Name")
            .Columns.Add("Frequency")
            .Columns.Add("Percent Spent")
            .Columns.Add("Started")
            .Columns.Add("Ends")
        End With

        Dim Budgets As New List(Of BudgetManager.DTO.Budget)
        Budgets = BudgetManager.Process.Budget.GetAllBudgets()

        Dim values(5) As String
        For Each budget In Budgets
            values(0) = budget.Name
            values(1) = BudgetManager.Lookup.GetLookupTextById(budget.FrequencyId)
            Dim total As Double = 0.0
            Dim spent As Double = 0.0
            For Each category In budget.Categories
                total += category.Amount
                spent += category.Spent
            Next
            values(2) = FormatPercent(spent / total)
            values(3) = budget.StartDate.ToString
            values(4) = budget.EndDate.ToString

            dt.Rows.Add(values)
        Next

        gridBudget.DataSource = dt
    End Sub
发生的情况是,当我按F5进行调试时,程序加载,网格仍然是空的,就像没有数据源一样。当我尝试单步执行代码时,它实际上到达了读取的行

Budgets = BudgetManager.Process.Budget.GetAllBudgets()
然后跨过这条线…窗口加载,它在方法中不会走得更远。上面的代码行所做的是最终对SQLite数据库执行一些SQL调用,代码到达调用execute方法的点,但甚至还没有进行查询。代码中该点之前的所有对象都已正确设置(通过调试和检查局部变量找到)

会发生什么

编辑:

例外情况如下:

“混合模式程序集是根据运行时版本“v2.0.50727”生成的,如果没有其他配置信息,则无法在4.0运行时中加载


这到底意味着什么?Ha

最佳猜测:您的sqllite execute方法失败,并且您有一个全局异常处理程序正在处理错误。

如果您在设计模式下手动将列名添加到Datagrid中,那么请确保字段名与从db返回的字段名匹配,在本例中是您的datatable

您也可以尝试直接绑定列表

gridBudget.DataSource = BudgetManager.Process.Budget.GetAllBudgets(Of BudgetManager.DTO.Budget)()

单步执行,尽管它从未到达方法的内部。调用失败。@Scott-尝试单步执行,而不是跨过它。@Scott我建议您编写一个单元测试来测试BudgetManager.Process.Budget.GetAllBudgets()正在按预期工作。有关混合模式程序集异常的可能修复,请参阅。由于某些原因,该解决方案实际上不适用于我。。。