/// <summary>
        /// 移除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button8_Click(object sender, EventArgs e)
        {
            if(this.dataGridView2.RowCount>0)
            {
                    foreach (DataGridViewRow row in dataGridView2.Rows)
                    {
                        if (row.Cells["xuanze1"].Value != null)
                        {
                            if (row.Cells["xuanze1"].Value.ToString() == "True")
                            {
                                this.dataGridView2.Rows.Remove(row);                            }
                        }
                    }
                       }
           
        }
           删除的数据老是对不上,麻烦高手帮我看看

解决方案 »

  1.   

    datagridview有一个提取选中行的属性,selectrows
      

  2.   

    这个属性获取的就是你选中的所有行。你直接循环他进行删除,总比你把 datagridview 循环遍历一次来的更高效吧。
      

  3.   

    foreach (DataGridViewRow row in dataGridView2.Rows)
                        {
                            if (row.Cells["xuanze1"].Value != null)
                            {
                                if (row.Cells["xuanze1"].Value.ToString() == "True")
                                {
                                    this.dataGridView2.Rows.Remove(row);
     
                                }
                            }
                        }
    这种写法带来的问题就是foreach是只读的,你把其中一个删除了,所以下次再进行的时候,他的循环总数都发生变化了,能准确吗?
      

  4.   

    你可以先用一个datagridviewrow[] 来记录要删除的行,在foreach循环结束后,再一次删除。不要把你的移除放在foreach内部
      

  5.   

    用foreach会提示datagridview的行已经变更错误。
    因为你删除第一行时,datagridview已经发生变化,那么foreach主体已经变化了。应该改为for循环,并且是从后往前 for (int i=10;i>=10;i--)
      

  6.   

    麻烦能写下代码吗?this.dataGridView2.SelectedRows 我没有找到他的删除方法
      

  7.   


                DataGridViewSelectedRowCollection temp_del_row_array = this.dataGridView1.SelectedRows;            foreach (DataGridViewRow item in temp_del_row_array)
                {
                    this.dataGridView1.Rows.Remove(item);
                }
      

  8.   

    我的多选是根据CheckBox选中的数量而定的,this.dataGridView1.SelectedRows;这个没法获取