This took me many hours to figure out, but if you have a checkbox cell inside a datagridview and it's data bound, the event that fires that updates the bound entity doesn't fire until you leave the row that's currently being edited. This is very annoying if you have a checkbox and you want something to happen when it's clicked.
The datagridview cellClicked event happens BEFORE the BeginEdit event, making it not very usefull for this scenario. The one to use instead is: OnContentClicked.
You can call the EndEdit() method inside this event to trigger the underlying binding events, but I'm told the safer approach is to use the CommitEdit() function which triggers the events but without leaving edit mode.

Here is an example.
private void HandleCellContentClick(object sender, DataGridViewCellEventArgs e)
{
((DataGridView)sender).CommitEdit(DataGridViewDataErrorContexts.Commit);
}