Foreach datagridview行不起作用

时间:2018-07-06 20:07:37

标签: c#

我不知道会发生什么,但是我的datagridview每个ro循环都不适用于我的所有行。

我还有一个复选框,当我被选中时需要获取其值

foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            if (Convert.ToBoolean(row.Cells[0].Value) == true)
            {
                MessageBox.Show(row.Cells[1].Value.ToString());
                dataGridView1.Rows.RemoveAt(row.Index);
            }

        }

它删除一些行,但不是全部选中

1 个答案:

答案 0 :(得分:0)

您要在遍历行的同时删除行。这总是至少会引起潜在的混乱-特别是在按索引删除行时。

一种选择是先将所有行复制到列表中,然后再使用DataGridViewRowCollection.Remove(DataGridViewRow)而不是按索引删除:

// Take a copy first, to avoid complications when modifying the collection
List<DataGridViewRow> rows = dataGridView1.Rows.Cast<DataGridViewRow>().ToList();
foreach (DataGridViewRow row in rows)
{
    if (Convert.ToBoolean(row.Cells[0].Value) == true)
    {
        MessageBox.Show(row.Cells[1].Value.ToString());
        // Remove the row rather than using the index
        dataGridView1.Rows.Remove(row);
    }
}