I use an ArrayList
for my binary search. The datagridview's rows is added to the ArryList. When I deleting a single row from the datagridview, it works almost perfectly. The problem is when I delete many rows from the datagridview from the top or the bottom and middle, it gives me an error. How can I refresh or update the ArrayList
after I deleted a row from the ArrayList
(datagridview)?
The error:
'Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index'
My code for copying rows to the ArrayList:
I put this code into the button MouseEnter
event, so before I click on button to search it copies everything to the ArrayList
.
foreach (var row in dataGridView2.Rows.Cast<DataGridViewRow>())
{
ArrayList[row.Index] = row.Cells[0].Value.ToString().Trim();
}
My delete code for the selected row(s):
foreach (DataGridViewRow item in this.dataGridView2.SelectedRows)
{
dataGridView2.Rows.RemoveAt(item.Index);
return;
}
My code for the binary search in winform:
int index = this.ArrayList.BinarySearch(textBoxBinarySearch.Text);
if (index > -1)
{
dataGridView2.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
dataGridView2.Rows[index].Selected = true;
dataGridView2.CurrentCell = dataGridView2.Rows[index].Cells[0];
MessageBox.Show("Index is equal to: " + index, "Binary Search");
}
The error is occuring at:
dataGridView2.Rows[index].Selected = true;
After opening a csv, the binary search is working perfectly!
Testing delete function.
Removed more rows from the datagridview.
After removed many rows from the datagridview, if I try to search for the name, the errors is appears.
I hope I don't miss any information from my description. Thanks if you read it trough!