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、 我会修改我的答案,请稍等。