C# datagridview问题?把同时选中的行数取消。 dgv.SelectedRows[i].Selected = false;
把选中的行数取消。一次选择多行如何点击按钮一次全取消intc=dgv.SelectedRows.Count;for(inti=0;i<c;c--)//问什么要这样写?一般...
把选中的行数取消。一次选择多行如何点击按钮一次全取消 int c = dgv.SelectedRows.Count;for (int i = 0; i < c; c--) //问什么要这样写? 一般不都是for (int i = 0; i < c; i++)如何理解 { dgv.SelectedRows[i].Selected = false; } 如果要是按照正常的for循环写成for (int i = 0; i < c; i++)应该怎么写呢?
展开
1个回答
展开全部
for 循环语法:
for(初始条件; 循环条件; 每次循环时执行的)
{
}
题主不要就以为最后一句只能是 i++,那真是看书看傻了。
套用这里初始条件就是 i = 0;循环条件就是 i < c;每次循环时执行的就是 c--。换句话说,当 c 减到 0 的时候,不再满足循环条件 i < c,循环就终止了。
之所以这么写的目的在于“倒序”,因为每次执行一遍循环体里的代码,dgv.SelectedRows.Count 都会变化,也就是说硬要写成 for (int i = 0; i < dgv.SelectedRows.Count; i++) 的形式的话,循环条件每次都在变化,这是不利于理解的。
非要改写的话也可以用 while:
while(dgv.SelectedRows.Count > 0)
{
dgv.SelectedRows[0].Selected = false;
}
硬要用 i++ 能不能写?能写,比如:
for (int i = 0; i < dgv.SelectedRows.Count; i++)
{
dgv.SelectedRows[i].Selected = false;
i--; // 题主可以把这行去掉,然后选中3行以上做试验,看报什么错
}
脱裤子放屁,何必呢?
另一种比较好理解的 for 写法:
for (int i = dgv.SelectedRows.Count; i > 0; --i)
{
dgv.SelectedRows[i].Selected = false;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询