Visual Basic.NET - imprimir printdocument

 
Vista:

imprimir printdocument

Publicado por bingsiu (12 intervenciones) el 05/03/2010 23:22:44
Estoy imprimiendo un gridview en vb.net 2005, el problema es que solo me imprime 1 hoja y son tres, alguien me podria revisar este codigo a ver que estoy haciendo mal. muchas gracias.
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim leftMargin As Single = 30
Dim topMargin As Single = e.MarginBounds.Top - 30
Dim line As String = Nothing
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics)

Dim Fil, Col As Int32
Dim LString As String = ""
LString = LString & "ESCUELA " & vbCrLf & vbCrLf '& vbCrLf & vbCrLf
LString = LString & " REPORTE DE ESTUDIANTES ACTIVOS " & vbCrLf & vbCrLf '& vbCrLf & vbCrLf
LString = LString & " Fechas:" & " -- " & " Del " & " -- " & Me.Txdate1.Text & vbCrLf & vbCrLf '& " -- " & " al " & " -- " & Me.Txdate2.Text & vbCrLf & vbCrLf '& vbCrLf"
LString = LString & " Total " & " " & Me.Txtotal.Text & vbCrLf & _
"------------------------------------------------------------------------------------------------" & vbCrLf & vbCrLf
count = 0
For Fil = 0 To Me.DGridView1.Rows.Count - 1
For Col = 0 To Me.DGridView1.Columns.Count - 1
Call RellenarEsp(Me.DGridView1.Item(Col, Fil).Value, Fil)
LString = LString & ncadena & Space(3)
Next
count += 1
LString = LString & vbCrLf
Next

yPos = topMargin + (count * printFont.GetHeight(e.Graphics))

e.Graphics.DrawString(LString, New Font("arial", 9, FontStyle.Regular), Brushes.Black, 100, 80)

If Not (line Is Nothing) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

imprimir printdocument

Publicado por ros (21 intervenciones) el 25/03/2011 13:57:15
Vamos a ver si consigo explicártelo, yo estoy en este momento peleándome con PRINTDOCUMENT desde VB NET 2010, el problema es que PRINTDOCUMENT carece de salto de pagina, vale, ya lo se, es una gran cagada de Microsoft, pero es lo que hay.
Por lo que tienes que entender que tu bucle terminara y nunca habrá generado un salto de página.

Lo que hace “e.HasMorePages = True” no es un salto de pagina, no es mas que un entra de nuevo al evento “PrintPage” y esta es la única manera de seguir imprimiendo en una segunda hoja en el mismo documento, tu lo tienes fácil, basta con que controles el numero de linea del que te sales y comienzas por ella en el primer “FOR”.
Imagina si lo que quieres conseguir es imprimir una factura tirando directamente desde la base de datos, pues ese es mi problema.

Después detecto algunas cosas que no me cuadran

“yPos = topMargin + (count * printFont.GetHeight(e.Graphics)) “
¿
Para que es esto?

”e.Graphics.DrawString(LString, New Font("arial", 9, FontStyle.Regular), Brushes.Black, 100, 80)”
¿No imprimirá siempre en la misma posición?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar