У меня есть DataGridView со столбцом DataGridViewCheckBoxColumn. Размер ячейки больше, чем у флажка, поэтому, чтобы сделать его удобным для пользователя, я хочу, чтобы событие CellClick действовало так, как если бы сам флажок был нажат.
В данный момент я делаю это в своем событии CellClick:
If e.ColumnIndex = dgv.Columns("CONFIRM").Index Then
If CBool(dgv.Item("CONFIRM", e.RowIndex).Value) = True Then
dgv.Item("CONFIRM", e.RowIndex).Value = False
Else
dgv.Item("CONFIRM", e.RowIndex).Value = True
End If
End If
Однако флажок фактически не изменяет состояние до тех пор, пока ячейка не потеряет фокус. Я видел много предложений по обработке различных событий (CellValueChanged, CurrentCellDirtyStateChanged) (например, http://www.codingeverything.com/2013/01/firing-datagridview-cellvaluechanged.html) и фиксации изменений с помощью:
If dgvDownloads.IsCurrentCellDirty Then
dgvDownloads.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
Однако это не работает, dgv мигает, но флажок не меняет проверенное состояние.
Как заставить флажок в DataGridViewCheckBoxColumn обновлять его состояние при щелчке по содержащейся ячейке?