【问题标题】:Combobox Datasource assignment throws Exception: 'System.InvalidOperationException' in System.Windows.Forms.dll组合框数据源分配抛出异常: System.Windows.Forms.dll 中的“System.InvalidOperationException”
【发布时间】: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


【解决方案1】:

谢谢你,jmcilhinney。您关于异常助手窗口的建议确实提供了我正在寻找的上下文。该窗口指示错误是由于将数据表分配给排序属性设置为“true”的组合框而导致的

【讨论】:

  • 我想我当时的猜测是错误的。我相当有信心,因为我已经看过很多次了。不过,您应该始终将DataSource 设置在最后。
猜你喜欢
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多