datagridviewrow删除行问题

wellcc 2010-06-07 11:56:31

foreach (DataGridViewRow r in dataGridView1.Rows)
{

dataGridView1.Rows.Remove(r);
}

为什么每次全删除时,总是会省一行没删
...全文
443 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxt891207 2011-09-02
  • 打赏
  • 举报
回复
学习一下
cxt891207 2011-09-02
  • 打赏
  • 举报
回复
学习一下
zhuazhuqingchong 2010-06-08
  • 打赏
  • 举报
回复
for(int i=0,i<dataGridView1.rows.count-1;)
{
if(condition){删除或者做其他操作}
else{i++;}
}
mngzilin 2010-06-08
  • 打赏
  • 举报
回复
你要倒着来遍历:
            for (int i = dataGridView1.Rows.Count-1; i > 0; i--)
{
if (dataGridView1.Rows[i].Cells[0].ToString() =="2")
dataGridView1.Rows.RemoveAt(i);
}
wellcc 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ly302 的回复:]
跟踪一下r的值,是否和dataGridView1.Rows对上

因为有的是从0开始的,不是从1开始
[/Quote]
没太明白,r不是datagridviewrow吗
wellcc 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mngzilin 的回复:]
dataGridView1.Rows.Clear();
[/Quote]
不是要全删,没删一条还需要判断一下
mngzilin 2010-06-08
  • 打赏
  • 举报
回复
dataGridView1.Rows.Clear();
皇城龙三 2010-06-08
  • 打赏
  • 举报
回复
跟踪一下r的值,是否和dataGridView1.Rows对上

因为有的是从0开始的,不是从1开始
w3c5201314 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jianuman 的回复:]
要删除的遍历 是必须倒过来遍历的
从行号最大 -》 行号最小

如:
有10行,你把当前的第5行删除了,第6行的行号变成第5行了
[/Quote]
不存在行号问题,删除时for循环数据每次会重新从datagridview控件读取
maguowei19890708 2010-06-08
  • 打赏
  • 举报
回复
学习了!!!
laoban108 2010-06-08
  • 打赏
  • 举报
回复
Rows,从0开始的吧?
lanfengsese 2010-06-08
  • 打赏
  • 举报
回复
foreach也是按序号遍历吧,可以看底层代码
wellcc 2010-06-08
  • 打赏
  • 举报
回复
用for循环的确是这样吧,用foreach也会有影响吗?
jianuMan 2010-06-08
  • 打赏
  • 举报
回复
要删除的遍历 是必须倒过来遍历的
从行号最大 -》 行号最小

如:
有10行,你把当前的第5行删除了,第6行的行号变成第5行了
wellcc 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 computerfox 的回复:]
剩下的一行是空的吧!而且这一行的前面有个*号,对吧!

那是datagridview控件的默认行为!
[/Quote]
不是空行,已经设置了不自动添加新行
捷哥1999 2010-06-08
  • 打赏
  • 举报
回复
剩下的一行是空的吧!而且这一行的前面有个*号,对吧!

那是datagridview控件的默认行为!
wellcc 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mngzilin 的回复:]
你要倒着来遍历:

C# code
for (int i = dataGridView1.Rows.Count-1; i > 0; i--)
{
if (dataGridView1.Rows[i].Cells[0].ToString() =="2")
dataGrid……
[/Quote]

foreach 为什么会留一行呢?
柳晛 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mngzilin 的回复:]
你要倒着来遍历:

C# code
for (int i = dataGridView1.Rows.Count-1; i > 0; i--)
{
if (dataGridView1.Rows[i].Cells[0].ToString() =="2")
dataGrid……
[/Quote]

为什么要倒过来?这逻辑多容易出错啊。
i>=0吧?
hejiasoft 2010-06-08
  • 打赏
  • 举报
回复
你每次删除的时候,会再循环,虽然是删除了,但是你并没有把传入的行给删除。
yazzyazz 2010-06-08
  • 打赏
  • 举报
回复
学习学习!
加载更多回复(1)

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧