有一列DataGridViewCheckBoxColumn要取得这个check是true还是false应该在哪个事件里?所有的事件都试过了...不好用...大部分事件都只是当焦点离开这个格时才进行验证

解决方案 »

  1.   

    DataGridView.CellContentClick 事件
      

  2.   

    在单元格中的内容被单击时发生。 
    DataGridView.CellContentClick 事件 
      

  3.   

    CellContentClick
    http://www.cnblogs.com/guozhiming2003/archive/2008/07/01/1233345.html
      

  4.   

    我试了,得出来的是null必须是离开这个格[1],然后才能读到值,就是我点了格[2]后,才能得到[1]的值
      

  5.   

    cellclick不是点击单元格的时候发生么?你可以看看这里http://msdn.microsoft.com/zh-tw/library/e0ywh3cz.aspx
      

  6.   

    事件的顺序哪可能是我决定啊反正,是CellContentClick 
    没取到想要的东西
      

  7.   

    确实是在 CellContentClick 事件里,只不过你要在第一句加上 DataGridView.EndEdit();
    呵呵~~接分~~~~
      

  8.   

    如果只是要知道checkbox的状态的话遍历一遍不就可以了
     foreach (DataGridViewRow DGR in DGV.Rows)
    {
          if (DGR.Cells[checkbox所在列].FormattedValue.ToString().ToLower() == "true")
             //该checkbox被选中
    }        
      

  9.   

    如果是要捕捉 CheckBox ( DataGridViewCheckBoxCell ) 列的状态改变 的话
    可以这样如果嵌入的 DataGridViewCheckBoxCell 列在第一列,判断状态并添加处理事件可以为:  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 0 && e .RowIndex != -1)
                { 
                         //获取控件的值
                        MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue.ToString());
                    //或者可以做其他事件处理程序            }
    }需要注意的是执行此事件是需要屏蔽其他datagridview单元格的cellcontentclick事件 ,即让除了 DataGridViewCheckBoxCell 列之外的所有列的ReadOnly=True;  在获取datagridview中checkbox列的值得时候 一定要用 EditedFormattedValue属性,此属性获取的是编辑以后数值 而value 和FormattedValue返回的往往是编辑以前的数值,而其重复单击的时候往往会出现错误(无法确定是编辑前还是编辑后的数值: 主要原因是焦点问题,需要先移动焦点使datagridview获取更改后的数据在区获取他 就没有问题了,所以以后用去获取数据前先要移出datagridview中的焦点!!!),所以一定要用EditedFormattedValue来获取属性值 http://www.cnblogs.com/huomm/articles/1106302.html