2

我想从用户选择的行开始清除 datagridview。我正在尝试几种方法来实现它,但它们都会产生一些错误,现在我有这样的东西:

foreach(DataGridViewRow row in this.dataGridView1.Rows)
{
    if(row.Index >= odelementu - 1)
      dataGridView1.Rows.RemoveAt(row.Index);
}

用户需要从哪一行中选择我们应该清除datagridview,然后单击按钮

odelementu //this variable represents the starting row

我不知道为什么循环会丢失一些行。我将不胜感激任何建议

4

2 回答 2

0
public void RemoveRows()
{
  var selectedrows = datagridview.SelectedRows.Cast<DataGridViewRow>();
  if (selectedrows.Count() == 0)
      return;
  var fromIndex = selectedrows.Last().Index;
  datagridview.Rows.Cast<DataGridViewRow>()
      .Where(p=>p.Index > fromIndex)
      .ToList()
      .ForEach(p=>datagridview.Rows.Remove(p));

}
于 2013-09-24T19:45:52.940 回答
0

这是因为您在循环中修改了DataGridViewRowCollectioninforeach并使indexget 变为inexact. 试试这个:

while(dataGridView1.Rows.Count>=odelementu) {
  dataGridView1.Rows.RemoveAt(odelementu-1);
}
于 2013-09-24T19:44:32.313 回答