Если флажок не содержит никаких данных, результатом будет нулевое значение.Вы можете проанализировать значение в вашем цикле с bool.Parse()
, предполагая, что значение не является нулевым, то есть
for ( int i = 0; i < dgv.Rows.Count; i++ )
{
var val = dgv.Rows[i].Cells[0].Value;
if ( val == null ) { continue; }
bool isChecked = bool.Parse( val.ToString() );
}