dataGridView中的某列是CheckBoxColumn列,我用了好多中方法判断,怎么都不行呢?真是搞不明白,那位,做过的给说一下,winform中的
我用的方法有
if(dataGridView1.Rows[0].Cells[2].Value.ToString()=="True")
{}
if(dataGridView1.Rows[0].Cells[2].Value==null)
{}
都不好用,总是提示“未将对象引用设置到对象实例”,怎么判断是否选择呢?

解决方案 »

  1.   

    bool check = Convert.ToBoolen(dgv.Rows[i].cells[j].FormatedValue);
      

  2.   

    bool check = Convert.ToBoolen(dgv.Rows[i].cells[j].FormatedValue);
    试了一下,这个可以判断,我在进一步看看,FormatedValue和Value有什么区别?
    还有别的方法码?
      

  3.   

    FormatedValue是在值改变后准备要提交到数据源的值,而Value是提交到数据源后的值,
    所以使用FormatedValue是合适的.
      

  4.   

    使用:object.Equals(dataGridView1.Rows[0].Cells[2].Value, true)判断觉得好些,
    最好不要再用ToString()来判断了.
      

  5.   

    感谢
    hbxtlhx(平民百姓) 
    我在看看
      

  6.   

    用上面的方法是可以判断,
    datagridview有一个现象,就是当在某格单元格输入数据后,如果焦点不移到别的单元格,也就是好像当前单元格还处于编辑状态的话,读取值是空的,怎么回事呢?
      

  7.   

    使用FormatedValue
    而不是Value
      

  8.   

    你可以在CellClick事件里来处理,比如:private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
    DataGridViewCheckBoxCell checkBoxCell = this.dataGridView1[e.ColumnIndex, e.RowIndex] as DataGridViewCheckBoxCell; if (checkBoxCell != null)
    {
    if (object.Equals(checkBoxCell.EditingCellFormattedValue, true))
    {
    Console.WriteLine("值改变之前的值为:True");
    }
    else
    {
    Console.WriteLine("值改变之前的值为:False");
    }
    //Console.WriteLine(checkBoxCell.EditingCellFormattedValue);
    //Console.WriteLine(checkBoxCell.Value);
    }
    }
      

  9.   

    不用那么麻烦的,你直接在datagridview控件里面设置就可以了,他有FlaseValue和TrueValue两个属性可以设置