我使用 anArrayList进行二分搜索。datagridview 的行被添加到ArryList。当我从 datagridview 中删除一行时,它几乎完美地工作。问题是当我从顶部或底部和中间的 datagridview 中删除许多行时,它给了我一个错误。ArrayList从ArrayList(datagridview)中删除一行后,如何刷新或更新?
错误:
'索引超出范围。必须是非负的并且小于集合的大小。参数名称:索引'
我将行复制到 ArrayList 的代码:
我将此代码放入按钮MouseEnter事件中,因此在单击按钮进行搜索之前,它将所有内容复制到ArrayList.
foreach (var row in dataGridView2.Rows.Cast<DataGridViewRow>())
{
ArrayList[row.Index] = row.Cells[0].Value.ToString().Trim();
}
我对所选行的删除代码:
foreach (DataGridViewRow item in this.dataGridView2.SelectedRows)
{
dataGridView2.Rows.RemoveAt(item.Index);
return;
}
我在 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");
}
错误发生在:
dataGridView2.Rows[index].Selected = true;
打开 csv 后,二进制搜索完美运行!
翻过高山走不出你
四季花海
蓝山帝景
相关分类