为什么这不起作用?
//::::::::::::::::::::::::::::::::::::
private void uxClearButton_Click(object sender, EventArgs e)
{
clearDGV();
}
void clearDGV()
{
// remove selected rows
foreach (DataGridViewRow row in uxDGV.Rows)
{
uxDGV.Rows.Remove(row);
}
}
//:::::::::::::::::::::::::::::::::::
DGV没有绑定,用户已在其中输入信息。
我得到的错误是InvalidOperationException was unhandled Uncommitted new row cannot be deleted.
修改
好的 - 感谢Steve等鼓励我为自己找到答案!!uxChargeBackDataGridView.Rows.Clear();
答案 0 :(得分:8)
幸运的是DataGridView
为我们提供了一种方法,只需像这样调用Clear
:
uxDGV.Rows.Clear();
您收到错误的原因是您尝试删除未提交的新行。 (一旦你知道问题,错误实际上很好并且信息丰富!)
新行由IsNewRow
行上的布尔DataGridView
属性标识。
在您的代码中,您还遇到了在修改集合时迭代集合的问题。所以你需要做类似下面的事情,我们向前迭代但每次都删除零:
int rowCount = dataGridView1.Rows.Count;
for (int n = 0; n < rowCount; n++)
{
if (dataGridView1.Rows[0].IsNewRow == false)
dataGridView1.Rows.RemoveAt(0);
}