我想从用户选择的行开始清除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
我不知道为什么循环错过了某些行。我会很感激任何建议
答案 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));
}