DataGridView.CellContentClick is not firing if I mouse click a DataGridViewCheckBoxCell very fast. How can I solve this? I need to know when CheckBox's check state changes
Try handling the CellMouseUp
event.
You can check which colum the MouseUp
event occurred in to see if it is your checkbox column.
You can also find out if it is in edit mode and end the edit mode programmatically, which in turn will fire the CellValueChanged
event.
In the example below, I have a DataGridView with two colums.
The first is a DataGridViewTextBoxColumn
and the second is a DataGridViewCheckBoxColumn
.
When the checkbox changes, the first column wil reflect its check state, without having to move from the row or cell.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.Rows.Add("False", false);
dataGridView1.Rows.Add("True", true);
}
private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == 1 && e.RowIndex >-1 && dataGridView1.Rows[e.RowIndex].Cells[1].IsInEditMode)
{
dataGridView1.EndEdit();
}
}
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value =
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With