【发布时间】:2020-12-21 06:55:30
【问题描述】:
以下代码在将数据表指定为组合框的数据源时导致异常。例外是“System.Windows.Forms.dll 中的‘System.InvalidOperationException’”此代码位于从表单的加载事件调用的过程中。在填充数据表之前,我尝试了代码的变体,包括作为数据源的赋值,但导致完全相同的异常。调试器不提供有关异常的其他上下文信息。我尝试使用 Synclock 块在同一线程中包含以下代码,但无济于事。尽管引发了异常,但组合框确实成功填充了数据。
Dim dtSuperFunds As DataTable = New DataTable()
If dtSuperFunds.Columns.Count = 0 Then
dtSuperFunds.Columns.Add("SuperFundID", GetType(String))
dtSuperFunds.Columns.Add("Name", GetType(String))
dtSuperFunds.Columns.Add("USI", GetType(String))
End If
If FillSuperFunds(dtSuperFunds) Then
'Me.SuperFunds.Items.Clear()
Me.SuperFunds.DataSource = dtSuperFunds
Me.SuperFunds.ValueMember = "SuperFundID"
Me.SuperFunds.DisplayMember = "Name"
End If
【问题讨论】:
-
检查您刚刚创建的
DataTable是否没有列有什么意义?当然,它没有列。你刚刚创建了它。也许这些代码行在您的应用程序中实际上是分开的,您只执行第一行一次,其余的行执行多次。但这可能并不理想,也许您应该每次都创建一个新的DataTable。 -
“调试器没有提供关于异常的额外上下文信息”。确实如此。您是否查看了异常的堆栈跟踪?当显示Exception Assistant 窗口时,它应该有一个View Details 链接。您查看了这些详细信息吗?
-
列测试是我在数据表范围为模块级别时解决问题的众多尝试之一的残余
标签: vb.net exception datatable combobox