VB.NET BindingSource不能是自己的数据源... datagridview中的错误

时间:2013-03-21 16:10:02

标签: vb.net datagridview bindingsource

我正在尝试在datagridview中进行搜索,循环遍历每个单元格并比较2个字符串 - SearchString和CellString。

我将工作划分为四个线程(通过为每个线程提供一个不同的行来处理)并行工作。线程不能同时读取同一个单元格,因为它们遍历不同的行,所以我不认为错误就在那里。

每个帖子都会执行以下操作:

   dim CellString as string
   For i As Integer = startrow To endrow

        For Each cell As DataGridViewCell In DataGridView.Rows(i).Cells

            CellString = cell.Value.ToString.ToLower ''Error appears here

            If cell.ColumnIndex <> 4 Then
                Select Case Compare(CellString, SearchString) ''complex function that compares 2 strings

                   ''....
                End Select
            End If
        Next
  Next

我得到的错误是:

BindingSource不能是自己的数据源。不要将DataSource和DataMember属性设置为引用BindingSource的值。

我不明白为什么会发生这种情况,因为我不会搞乱BindingSource或使用DataSource。此外,我不做任何更新,我只读取每个单元格作为字符串。

我找不到任何类似的问题,所以感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

如果没有看到您的整个代码,很难准确回答这个问题,但是所有内容都指向您正在尝试从您正在创建的线程中访问UI的某些元素(Datagridview是其中的一部分)。

据微软称,这不合法:

按照设计,无法在创建表单或控件的线程上调用Windows窗体或控件方法

查看this article了解详情。它帮助我解决了类似的问题。