Vb.net WIndows窗体窗口加载方法未完成
因此,在我的windowonload方法中,我使用从数据库检索的值预先填充网格。以下是窗口加载的方法: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
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()正在按预期工作。有关混合模式程序集异常的可能修复,请参阅。由于某些原因,该解决方案实际上不适用于我。。。