我正在尝试删除我在datagridview中选择的行以及之后的行。它下面的行在单元格的值之前包含五个空格。例如,“(五个空格)爆米花。循环应该在阅读下一行后停止删除,并看到它没有空格。有什么想法吗?
答案 0 :(得分:0)
这样的事情,假设不必检查所选行的空格:请注意,代码首先标识要删除的行,然后以相反的顺序删除它们,以避免在行期间更改行数的任何问题循环。
if (dgv.CurrentCell == null) return;
var spaces = new string(' ', 5);
var start = dgv.CurrentCell.RowIndex;
if (start == dgv.Rows.Count) return;
List<int> rowsToDelete = new List<int> { start };
start++;
for (int i = start; i < dgv.Rows.Count; i++)
{
// Uncommitted new rows cannot be removed programatically
if (dgv.Rows[i].IsNewRow == false
&& dgv.Rows[i].Cells[0].Value.ToString().StartsWith(spaces))
{
rowsToDelete.Add(i);
}
else
{
break;
}
}
rowsToDelete.Reverse(); // List.Reverse() reverses the list in place and returns void
foreach (var rowIndex in rowsToDelete)
{
dgv.Rows.RemoveAt(rowIndex);
}