从所选行开始清除datagridview

时间:2013-09-24 19:41:37

标签: c# datagridview

我想从用户选择的行开始清除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

我不知道为什么循环错过了某些行。我会很感激任何建议

2 个答案:

答案 0 :(得分:0)

这是因为您修改了DataGridViewRowCollection循环中的foreach并使index变为inexact。试试这个:

while(dataGridView1.Rows.Count>=odelementu) {
  dataGridView1.Rows.RemoveAt(odelementu-1);
}

答案 1 :(得分: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));

}