将DataGridView
控件绑定到绑定源时,我的应用程序中出现以下错误:
操作无效,因为它导致对SetCurrentCellAddressCore函数的可重入调用
绑定源取决于数据表。我正在从DataGridView过滤记录。我使用了dataGridView1_CellValueChanged()
事件,我正在过滤DataGridView。但是当我从当前单元格中删除数据时,会发生此错误。
如何解决此问题?
答案 0 :(得分:29)
DataGridView
引发了异常,以防止发生无限循环。造成这种情况的原因通常是以下之一:
DataGridView
仍在使用查看CellValueChanged
事件的处理程序,并确保您没有在处理程序中执行上述任何操作。
答案 1 :(得分:26)
这很可能是由于您在保存后尝试刷新DataGridView而导致的。 我建议你调用方法而不是只是调用它。
BeginInvoke(new MethodInvoker(PopulateControl ));
答案 2 :(得分:2)
我发现发生此异常是因为我的代码中有一个空的DataGridView.CellValidated子。一旦我删除了那个空子,错误就消失了。
答案 3 :(得分:0)
这非常相似(并且可能是相同的但没有编辑单元格)。需要调用对控件所在的同一线程(事件,后台工作程序,另一个线程......)之外的数据网格视图执行的任何操作。在这里阅读解决方案。
https://stackoverflow.com/questions/44456465/datagridview-invalidoperationexception-reentrant-call-to-setcurrentcelladdressco?noredirect=1#comment75919793_44456465
答案 4 :(得分:0)
这可能是由于在customer_id
位于DataGridview
中时操纵数据源引起的。
另一种解决方案是在操纵数据源时在BeginEdit
的{{1}}上SuspendBinding
。
CurrencyManager
答案 5 :(得分:0)
将 False 设置为datagridview的MultiSelect属性。
myDataGridView.MultiSelect=false;
答案 6 :(得分:-1)
在dataGridView.RowEnter中放置Application.DoEvents()也可以。