Try to handle the CellMouseUp event. You can check in which column the MouseUp event occurred to see if this 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 trigger the CellValueChanged event.
In the example below, I have a two-column datagridview. The first is the column of the text box, and the second is the column of the check box. When the checkbox changes, the first wil column reflects its check state without moving from a 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(); } } }
NTN
Colby africa
source share