codice:
Private Sub PrintDocument3_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument3.PrintPage
'DICHIARAZIONI GENERALI
Dim Font1 As New Font("Times New Roman", 28, FontStyle.Bold) 'Creo i font necessari
Dim Font2 As New Font("Times New Roman", 14, FontStyle.Bold)
Dim Font3 As New Font("Times New Roman", 12)
Dim Font4 As New Font("Times New Roman", 12)
Dim Font5 As New Font("Times New Roman", 18, FontStyle.Bold)
' Static i As Integer
Dim Y As Integer = 340 'In questa invece si mette la posizione di stampa della prima riga dei dati. ATTENZIONE Questa variabile NON deve essere statica, altrimenti i dati vengo progressivamente stampati più in basso, fino a uscire dal foglio
Dim a, b, bb As String
Dim c, d, m, v, z, p, q, cc As Date
Dim dtOggi As Date
Dim f, n, l, ll, qq, qqq As String
Dim g, h, i, ii As Integer
Static progress As Integer
Static num_pagina As Integer = 0
Static index_count_progrss As Integer
Dim conteggio As Integer = 0
num_pagina = num_pagina + 1
progress = DataGridView2.Rows.Count - 2
e.Graphics.DrawString("Elenco certificati ", Font5, Brushes.Black, 170, 180)
If MaskedTextBox1.Text <> "00/00/0000" And TextBox5.Text = "" Then
e.Graphics.DrawString("Data delibera: " & MaskedTextBox1.Text, Font3, Brushes.Black, 7, 240)
e.Graphics.DrawString(TextBox1.Text, Font3, Brushes.Black, 692, 240)
ElseIf MaskedTextBox1.Text = "00/00/0000" And TextBox5.Text <> "" Then
e.Graphics.DrawString("Anno: " & TextBox5.Text, Font3, Brushes.Black, 7, 240)
e.Graphics.DrawString(TextBox5.Text, Font3, Brushes.Black, 692, 240)
Else
End If
e.Graphics.DrawLine(Pens.Black, 7, 260, 500, 260)
e.Graphics.DrawString("N°", Font3, Brushes.Black, 7, 280)
e.Graphics.DrawString("Cognome", Font3, Brushes.Black, 42, 280)
e.Graphics.DrawString("Nome", Font3, Brushes.Black, 242, 280)
e.Graphics.DrawString("Luogo di nascita", Font3, Brushes.Black, 442, 280)
e.Graphics.DrawString("Data di nascita", Font3, Brushes.Black, 672, 280)
If index_count_progrss <= progress Then
While conteggio < 39
If index_count_progrss = 0 Then
e.Graphics.DrawString(index_count_progrss, Font3, Brushes.Black, 7, 350)
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(1).Value, Font3, Brushes.Black, 42, 350)
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(2).Value, Font3, Brushes.Black, 242, 350)
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(3).Value, Font3, Brushes.Black, 442, 350)
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(4).Value, Font3, Brushes.Black, 692, 350)
conteggio = conteggio + 1
index_count_progrss = index_count_progrss + 1
Else
If index_count_progrss <= progress Then
e.Graphics.DrawString(index_count_progrss, Font3, Brushes.Black, 7, 350 + (20 * conteggio))
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(1).Value, Font3, Brushes.Black, 42, 350 + (20 * conteggio))
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(2).Value, Font3, Brushes.Black, 242, 350 + (20 * conteggio))
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(3).Value, Font3, Brushes.Black, 442, 350 + (20 * conteggio))
e.Graphics.DrawString(DataGridView2.Rows(index_count_progrss).Cells(4).Value, Font3, Brushes.Black, 692, 350 + (20 * conteggio))
conteggio = conteggio + 1
index_count_progrss = index_count_progrss + 1
Else
conteggio = conteggio + 1
End If
End If
End While
End If
If index_count_progrss <= progress Then
conteggio = 0
e.HasMorePages = True
End If
End Sub
praticamente questa sub stampa un elenco presente in un datagridview suddividendolo su più pagine con il metodo hasmorepage.