C# DataGridViewCheckBoxColumn单元格鼠标单击

C# DataGridViewCheckBoxColumn单元格鼠标单击,c#,winforms,datagridview,C#,Winforms,Datagridview,我使用的是一个DataGridView,其中包含一个复选框列。当我试图检索该列的值时,它总是false。请告诉我原因 这是我的密码: private void dataGridViewCrossRef_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { bool isChecked1 = false; isChecked1 = (Boolean)dataGridViewCross

我使用的是一个
DataGridView
,其中包含一个
复选框
列。当我试图检索该列的值时,它总是false。请告诉我原因

这是我的密码:

private void dataGridViewCrossRef_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
     {
       bool isChecked1 = false;
       isChecked1 = (Boolean)dataGridViewCrossRef[25, e.RowIndex].FormattedValue;
       if (isChecked1)
       {
          //Some code
       }
     } 

尝试
CellContentClick事件

    private void dataGridViewCrossRef_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 25)
        {
            bool IsBool = false;
            if (bool.TryParse(dataGridViewCrossRef[e.ColumnIndex, e.RowIndex].EditedFormattedValue.ToString(), out IsBool))
            {
               //Some code
            }
        }
    }
编辑

CellClick事件中尝试此操作,您需要将
dataTable
声明为
public

   private void dataGridViewCrossRef_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 25)
        {
            //Find primaykey or something unique from your dataTable   
            DataRow[] Rows = dataTable.Select("Id = '" + dataGridViewCrossRef[0, e.RowIndex].EditedFormattedValue.ToString() + "'");

            Rows[0]["NameOfColumnHasCheckBox"] = !bool.Parse(Rows[0]["NameOfColumnHasCheckBox"].ToString());
        }
    }

由于绑定到Chekbox的数据是整数,所以我已经将代码更改为下面的代码,并且成功了

谢谢

私有void dataGridViewCrossRef_CellContentClick(对象发送者,DataGridViewCellEventArgs e) { 如果(e.ColumnIndex==25) { int-CellValue=0;
CellValue=Convert.ToInt16(dataGridViewCrossRef[e.ColumnIndex,e.RowIndex].EditedFormattedValue); 如果(CellValue==1) {

            }
        }
    }

组合框的项目是什么,只是“真”或“假”?很抱歉,它不是组合框,而是复选框…请尝试我的答案,如果发现一些错误,请告诉我。
:)
dataGridViewCrossRef[e.ColumnIndex,e.RowIndex]。Value=!(bool)dataGridViewCrossRef[e.ColumnIndex,e.RowIndex].Value;很抱歉,bool的结果仍然是false。您是如何将
数据绑定到
DataGridView
?通过
BindingSource
DataTable
或未绑定的数据绑定的?请稍候,下次在您的问题中只需添加问题中的一些重要细节:)尝试编辑您的问题:),这一定是您的问题n、 我会修改我的答案,请稍等。