Если я правильно вас понимаю, вы говорите, что значение флажка не совпадает с базовыми данными?
Это может быть связано с тем, что данные были обновлены и являются «грязными», например он еще не был передан источнику данных. Если вы добавите обработчик событий следующим образом:
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.CurrentCell is System.Windows.Forms.DataGridViewCheckBoxCell)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
Тогда это должно обновить источник данных, и вы получите правильное состояние флажка при запросе к ячейке.