for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                 if( dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString().Equals("True") )
                {
                    dataGridView1.Rows.RemoveAt(i);
                }  
            }
发现有些选中不能删除.在多执行几次才行

解决方案 »

  1.   

    dataGridView1.Rows.RemoveAt(i); 这句执行之后dataGridView1.Rows.Count;就变了 
      

  2.   

    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    if( dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString().Equals("True") )
                    {
                        dataGridView1.Rows.RemoveAt(i);
                        i--;
                    } 
                } 
      

  3.   

       List<DataGridViewRow> lrs = new List<DataGridViewRow>();
               for (int i = 0; i < dataGridView1.Rows.Count; i++)
               {
                  if( dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString().Equals("True") ) 
                    { 
                        lrs.Add(dataGridView1.Rows[i]);
                    }  
                       
                   
               }
               for (int i = 0; i < lrs.Count; i++)
               {
                   dataGridView1.Rows.Remove(lrs[i]);
               }
      

  4.   


     for (int i = dataGridView1.Rows.Count-1; i >=0 ; i--)
                {
                    if (dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString().Equals("True"))
                    {
                        dataGridView1.Rows.RemoveAt(i);
                    }
                } 正确的删除顺序是从后向前删除,原因自己想下就出来了。
      

  5.   

    当从集合中移除时,集合中后续项的索引将改变。从后面删起
    for (int i = dataGridView1.Rows.Count; i > 0; i--) 
                { 
                    if( dataGridView1.Rows[i-1].Cells[0].EditedFormattedValue.ToString().Equals("True") ) 
                    { 
                        dataGridView1.Rows.RemoveAt(i); 
                    }  
                } 
      

  6.   

    dataGridView1.Rows.Clear()
    一句话搞定。
      

  7.   

    int i = 0;
    while (i < dataGridView1.Rows.Count)
    {
       if (dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString().Equals("True"))
         dataGridView1.Rows.RemoveAt(i);
       else
         i++;
    }