Read the remarks section for CellValueChanged

https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

Specifically

In the case of check box cells, however, you will typically want to handle the change immediately. To commit the change when the cell is clicked, you must handle the DataGridView.CurrentCellDirtyStateChanged event. In the handler, if the current cell is a check box cell, call the DataGridView.CommitEdit method and pass in the Commit value.