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++)应该怎么写呢? 展开
 我来答
然后去远足
2016-08-24 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2401万
展开全部

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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式