Hi,
I have a datagrid of one column and many rows. Cell become editable when i click on the cell. i have a stutation in which if i edit the cell value to zero and click on the next cell then leaving cell (0.00) should be remove at that location. But movement i click on next cell
cellEditEnd
methos gets called and in this method i have written the code to remove the cell. But when it try to remove the cell but code
datagrid.rows.RemoveAt(index)
then exception throws
"Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function".While googling i found many workaround for this case e.g Using beginivoke method with deegate or set focus some aother controls or Disbale the grid before the remove cell. But i didn't got the solution. Exception throws when removing the rows from the grid.
Below is stack trace:
---> System.InvalidOperationException: Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.
at System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
at System.Windows.Forms.DataGridView.OnRemovingRow(Int32 rowIndexDeleted, Point& newCurrentCell, Boolean force)
at System.Windows.Forms.DataGridViewRowCollection.RemoveAtInternal(Int32 index, Boolean force)
at System.Windows.Forms.DataGridViewRowCollection.RemoveAt(Int32 index)
MY code is simmilar at below:
private void grdListItems_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (cellAmt == 0)
{
RemoveZeroDollarEntry(e.RowIndex);
}
}
And
private void RemoveZeroDollarEntry(int rowIndex)
{
do something...
grdListItems.Rows.RemoveAt(rowIndex);
}
Can any one give the correct solution? please.
For googling i have went to below location
http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/f824fbbf-9d08-4191-98d6-14903801acfc/
http://blogs.dotnetnerds.com/steve/archive/2007/05/17/DataGridView-Reentrant-Call-Nightmare.aspx