Mam funkcję, która jest wywoływana z cell_endedit. Porusza się dataGridViewRow wewnątrz DataGridView:Jak uniknąć ponownego wywołania do setCurrentCellAddressCore?
private void moveRowTo(DataGridView table, int oldIndex, int newIndex)
{
if (newIndex < oldIndex)
{
oldIndex += 1;
}
else if (newIndex == oldIndex)
{
return;
}
table.Rows.Insert(newIndex, 1);
DataGridViewRow row = table.Rows[newIndex];
DataGridViewCell cell0 = table.Rows[oldIndex].Cells[0];
DataGridViewCell cell1 = table.Rows[oldIndex].Cells[1];
row.Cells[0].Value = cell0.Value;
row.Cells[1].Value = cell1.Value;
table.Rows[oldIndex].Visible = false;
table.Rows.RemoveAt(oldIndex);
table.Rows[oldIndex].Selected = false;
table.Rows[newIndex].Selected = true;
}
w rzędzie table.Rows.Insert (newIndex, 1) pojawia się następujący błąd:
Unhandled exception of type "System.InvalidOperationException" in System.Windows.Forms.dll
Additional data: Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.
to się dzieje, gdy kliknę inną komórkę w procesie edytowanie bieżącej komórki. Jak uniknąć tego błędu i czy mój wiersz został poprawnie wstawiony?
Chociaż ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego sposobu i/lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi. –