代码之家  ›  专栏  ›  技术社区  ›  Scott

Windows窗体窗口加载方法未完成

  •  0
  • Scott  · 技术社区  · 14 年前

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

    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运行时中加载。

    这到底是什么意思?哈

    2 回复  |  直到 14 年前
        1
  •  0
  •   Joel Coehoorn    14 年前

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

        2
  •  0
  •   Saif Khan    14 年前

    如果在设计模式下手动将列名称添加到数据报,那么请确保字段名称与从数据库返回的字段名称匹配,在本例中是数据表。

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

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