Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/02/2013, 07:46
Avatar de Aquaventus
Aquaventus
 
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Imprimir mas de una hoja

pues no te crea mas hojas porque tú declaras la siguiente variable :
Código vb:
Ver original
  1. Dim line As String = Nothing
después esa misma variable no la vuelves a utilizar, conservando su valor Nothing hasta llegar al siguiente código :
Código vb:
Ver original
  1. If Not (line Is Nothing) Then
  2.             e.HasMorePages = True
  3.         Else
  4.             e.HasMorePages = False
  5.         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 original
  1. linesPerPage = 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!.
Ejemplo :
Código vb:
Ver original
  1. 'Esta variable tiene que ser publica
  2. Dim linea As Integer = 1
  3.  
  4.  
  5. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
  6. 'Definimos el tipo de fuente y de mas
  7. Dim Fuente As New Font("arial", 10)
  8. 'Definimos en que posicion se va iniciar la impresion
  9. Dim posicion As Integer = 20
  10. 'Contador de lineas que se van imprimiendo
  11. Dim lineaimpresa As Integer = 0
  12. 'Variable para ver cuando se va hacer un salto de pagina
  13. Dim salto_pagina As Boolean = False
  14. 'Variable para designar cuantos lineas se van a imprimir por hoja
  15. Dim NroLineasPagina As Integer = 70 For i = linea To 150
  16. e.Graphics.DrawString("Ejemplo de linea: " & linea, Fuente, Brushes.Black, 10, posicion)
  17. posicion += 15
  18. linea += 1
  19. lineaimpresa += 1
  20. If lineaimpresa = NroLineasPagina Then
  21. salto_pagina = True
  22. Exit For
  23. End If
  24. Next If salto_pagina = True Then
  25. e.HasMorePages = True
  26. Else
  27. e.HasMorePages = False
  28. End If
  29. End Sub
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net