我不知道会发生什么,但是我的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);
}
}
它删除一些行,但不是全部选中
答案 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);
}
}