就数据表填充过程而言,填充方法在 BackgroundWorker 中运行,然后我在 BackgroundWorker Completed 事件中运行 BindingSourceFirms.ResetBindings(False)。 此问题可能是由于在辅助线程中填充 DataTable 引起的。由于它会影响作为控件的 ComboBox,因此无法从辅助线程访问它。因此,您需要在 DoWork 事件处理程序中填充未绑定的 DataTable,然后将数据绑定到 RunWorkerCompleted 事件处理程序,该事件处理程序在 UI 线程上执行。 这是我的测试代码:
Friend Class SurroundingClass
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
backgroundWorker1.RunWorkerAsync()
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
End Sub
Private Sub backgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
Me.table1TableAdapter.Fill(Me.dataSet1.Table1)
End Sub
Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
comboBox1.DataSource = dataSet1.Table1
comboBox1.DisplayMember = "ID"
comboBox1.ValueMember = "ID"
End Sub
End Class
测试结果: >>当我在 VS 中运行它时,但在 Windows 上运行应用程序时没有。 您如何提供更多信息来重现情况,您遇到了什么错误? 诚挚的问候, Daniel Zhang
如果回复有帮助,请点击“接受答案”并点赞。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。