我正在尝试在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。此外,我不做任何更新,我只读取每个单元格作为字符串。
我找不到任何类似的问题,所以感谢任何帮助!
答案 0 :(得分:0)
如果没有看到您的整个代码,很难准确回答这个问题,但是所有内容都指向您正在尝试从您正在创建的线程中访问UI的某些元素(Datagridview是其中的一部分)。
据微软称,这不合法:
按照设计,无法在创建表单或控件的线程上调用Windows窗体或控件方法
查看this article了解详情。它帮助我解决了类似的问题。