trata de poner el e.HasMorePage = true al final dentro de tu for, porque si mas no me equivoco eso generaria otra pagina lo cual talvez nunca llama ya que lo pones fuera de tu for
Código vb:
Ver originalPrivate Sub prt_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
' Este evento se produce cada vez que se va a imprimir una página
Dim printFont As System.Drawing.Font
printFont = prtFont
'Datos es una lista generica de mi base de datos trabajadores
For Each info As BoInfo In Datos
nContador += 1
e.Graphics.DrawRectangle(New Pen(Color.Red, 1), -75, -75, 1585, 639)
e.Graphics.DrawString("Código", printFont, Brushes.Black, 170, 60)
e.Graphics.DrawString(info.codigo, printFont, Brushes.Black, 460, 60)
e.HasMorePages = True
Next
End Sub
si aun asi no da probablemente sea por el orden, la logica if ponla primero y la logica for ponla despues.