我有一个叫GrdBjbmCho的DataGridView,其中有一列是DataGridViewCheckBoxColumns,叫Xz_F,我现在想做到,单击Xz_F列中的某一行时,如果是选中的(也就是value=1)时,就在一个DataTable里面插一行,value=0时就在DataTable里面删除一行.但现在有问题了,我发现在DataGridView的CellClick()事件里捕捉到的Xz_F值是Click之前的值,并不是Click之后的值..测试代码如下:
if (e.ColumnIndex == GrdBjbmCho.Columns["Xz_F"].Index)    //如果当前列是BjbmCho_Xz_F
{
    if (GrdBjbmCho.CurrentCell.Value.ToString().Trim() == "1")
    {
        MessageBox.Show("a");
    }
}注:问题是当我在Xz_F列打上勾时,不提示Messagebox,而是当我把勾取消的时候,他才提示...晕..我怀疑CellClick事件是不是激发在修改值之前,所以捕捉不了修改后的值....请各位高手帮帮手...或者是不是要用其它方法...Vilad是件是不行的,因为我其它地方会直接修改该表的值,只能的Click时做处理

解决方案 »

  1.   

    用CellContentClick事件试试,在我这用这个是正确的。
      

  2.   

    但是这个点单元格是不走事件的,必须点单元格里的checkbox才会触发。
      

  3.   

    用CellContentClick()事件试试  
    private void GrdBjbmCho_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
    if (GrdBjbmCho.Columns[e.ColumnIndex].HeaderCell== "Xz_F"&&e.RowIndex!=-1)
    {
    if (GrdBjbmCho.CurrentCell.Value.ToString().Trim() == "1") 
        { 
            MessageBox.Show("a"); 
        } 
    }
    }