C# 我能';无法清除datagridview中的所有空行
这是我的密码:C# 我能';无法清除datagridview中的所有空行,c#,datagridview,C#,Datagridview,这是我的密码: foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells[0].Value.ToString().Trim() == "") { dataGridView1.Rows.Remove(row); } } 还尝试: for (int i = 0; i < dataGridView1.Rows.Co
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value.ToString().Trim() == "")
{
dataGridView1.Rows.Remove(row);
}
}
还尝试:
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString().Trim() == "")
{
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);
}
}
for(int i=0;i
我希望只看到带有'item001'的行
我无法实现此结果,因为我得到了一些空值行:
当您在枚举时从集合中删除多个项时,情况会变得更糟,这将导致未定义的行为。你可能需要一份
var rows = dataGridView1.Rows.Cast<DataGridViewRow>().ToArray();
foreach (DataGridViewRow row in rows)
{
if (row.Cells[0].Value.ToString().Trim() == "")
{
dataGridView1.Rows.Remove(row);
}
}
它无法正常工作,因为您在迭代集合时从集合中删除了元素;删除会导致集合重新调整其索引,不是吗?因此,当您通过调用
MoveNext
进入下一次迭代时,您会得到意外的元素。而不是与“
进行比较,请尝试string.IsNullOrEmpty
方法:
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[0].Value.ToString()))
{
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);
}
}
for(int i=0;i
或for
从Count-1
循环到0
@C.evenhui是的,有很多选择,这就是为什么我将一个句子框定为你可以使用的,它也会留下一些不想要的结果,但。。。你应该像@C.Evenhuis所说的那样,使用反面的for(int i=dataGridView1.Rows.Count-1;i>=0;i-)
Gotcha,在for循环的反面有点混乱,但为启示欢呼。它说有期待”)“我的坏,添加了缺少的括号和大括号(对于一行程序可选)在更新的答案中。这不会编译为string。IsNullOrEmpty
只能与string
一起使用,其中as值
属性是对象
;即使它会被编译,这也不会起作用。它也会留下一些不想要的结果!
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[0].Value.ToString()))
{
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);
}
}