如何检查datagridview的后续记录

时间:2015-02-16 15:33:32

标签: c# winforms

我正在尝试删除我在datagridview中选择的行以及之后的行。它下面的行在单元格的值之前包含五个空格。例如,“(五个空格)爆米花。循环应该在阅读下一行后停止删除,并看到它没有空格。有什么想法吗?

1 个答案:

答案 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);
}