1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
'Declaration d'une variable "statique" pour pouvoir parcourir le listView en cas des plusieurs pages
Static pos As Int32 = 0
Dim HauteurTexte As Single = e.Graphics.MeasureString("X", Me.ListView1.Font).Height 'Recuperation d'hauteur du texte
Dim LignePerPage As Int32 = CInt(e.MarginBounds.Height / HauteurTexte) 'Calcul de nombre des lignes par page
Dim XPos, YPos As Single 'Les positions temporaires
YPos = HauteurTexte
XPos = 0
'Imprime la liste
For cmptLig As Int32 = 0 To ListView1.Items.Count - 1
If cmptLig > LignePerPage Then
YPos = 0
e.HasMorePages = True
Exit For
ElseIf pos > ListView1.Items.Count - 1 Then
'travail termine
e.HasMorePages = False
pos = 0
Exit For
End If
For clm As Int32 = 0 To ListView1.Columns.Count - 1
e.Graphics.DrawString(ListView1.Items(pos).SubItems(clm).Text, ListView1.Font, Brushes.Black, XPos, YPos) ' New Font("Arial", 15, FontStyle.Regular)
XPos += ListView1.Columns(clm).Width 'la position horisontale
Next
YPos += HauteurTexte
XPos = 0
pos += 1
Next
If e.HasMorePages = False Then pos = 0 'Si il n'y a que une page on met la variable statique a 0
End Sub
Private Sub Btnprint_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnPrint.Click
PrintDocument1.DocumentName = "Acteurs sans photo"
PrintDocument1.DefaultPageSettings.Margins = New Margins(50, 10, 50, 50) 'definir les marges
PrintDocument1.OriginAtMargins = True 'appliquer les marges définies
PrintDocument1.DefaultPageSettings.Landscape = False 'mode portret
PrintPreviewDialog1.Document = PrintDocument1 'Chargement du document dans l'apperçu
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintPreviewDialog1.ShowDialog() 'Affichage du dialogue
End Sub |
Partager