C#DataGridView(IndexOutOfRangeException)(操作无效,因为它导致对SetCurrentCellAddressCore函数的可重入调用)

时间:2019-05-06 16:24:29

标签: c# datagridview indexoutofrangeexception

导致问题的我的初始代码:

dataGridView1.DataSource = new BindingSource().DataSource = myDataSourceVar;

并将其更改为:

BindingSource myBindingSource = new BindingSource();
myBindingSource.DataSource = myDataSourceVar;
dataGridView1.DataSource = myBindingSource ;

问题: 导致问题的这两个代码之间有什么区别?因为我只认为我的初始代码比另一行更干净一行。

错误参考:

************** Exception Text **************
System.IndexOutOfRangeException: Index -1 does not have a value.
   at System.Windows.Forms.CurrencyManager.get_Item(Int32 index)
   at System.Windows.Forms.DataGridView.DataGridViewDataConnection.OnRowEnter(DataGridViewCellEventArgs e)
   at System.Windows.Forms.DataGridView.OnRowEnter(DataGridViewCell& dataGridViewCell, Int32 columnIndex, Int32 rowIndex, Boolean canCreateNewRow, Boolean validationFailureOccurred)
   at System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
   at System.Windows.Forms.DataGridView.OnCellMouseDown(HitTestInfo hti, Boolean isShiftDown, Boolean isControlDown)
   at System.Windows.Forms.DataGridView.OnCellMouseDown(DataGridViewCellMouseEventArgs e)
   at System.Windows.Forms.DataGridView.OnMouseDown(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.DataGridView.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
System.IndexOutOfRangeException: 'Index -1 does not have a value.
operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.

其他参考文献:

  1. Windows form application exception
  2. DataGridView Object Databinding Issue "Index -1 does not have a value"

0 个答案:

没有答案