pues no te crea mas hojas porque tú declaras la siguiente variable :
después esa misma variable no la vuelves a utilizar, conservando su valor
Nothing hasta llegar al siguiente código :
Código vb:
Ver originalIf Not (line Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
pues obvio que le dice que no hay mas páginas y por eso siempre te queda 1, no hagas simple
COPY-PASTE,
analiza y averigua cual es la función que tiene cada cosa.
Con la siguiente línea obtienes la cantidad de lineas que puedes tener por página :
Código vb:
Ver originallinesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics)
luego necesitas averiguar cuantas líneas le has puesto manualmente y contando con el recorrido que haces a tu datagridview(en tu for) y compararlo si llega a la cantidad de lineas por página, si cumple puedes mandar el salto de página y guardar en una variable en la línea que se quedo para que en la proxima hoja empieze donde se quedó. Te dejo este ejemplo para que lo analizes. Saludos!
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)
.
Ejemplo :
Código vb:
Ver original'Esta variable tiene que ser publica
Dim linea As Integer = 1
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'Definimos el tipo de fuente y de mas
Dim Fuente As New Font("arial", 10)
'Definimos en que posicion se va iniciar la impresion
Dim posicion As Integer = 20
'Contador de lineas que se van imprimiendo
Dim lineaimpresa As Integer = 0
'Variable para ver cuando se va hacer un salto de pagina
Dim salto_pagina As Boolean = False
'Variable para designar cuantos lineas se van a imprimir por hoja
Dim NroLineasPagina As Integer = 70 For i = linea To 150
e.Graphics.DrawString("Ejemplo de linea: " & linea, Fuente, Brushes.Black, 10, posicion)
posicion += 15
linea += 1
lineaimpresa += 1
If lineaimpresa = NroLineasPagina Then
salto_pagina = True
Exit For
End If
Next If salto_pagina = True Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub