Imports System.Drawing.Printing
Public Class Form1
Public WithEvents pdPrinter As PrintDocument
Public ppvwPrinter As PrintPreviewDialog
Private shtPageNumber As Int16 = 0
Private shtTotalPages As Int16 = 0
Private Sub TestPrintPreview(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
pdPrinter = New PrintDocument
ppvwPrinter = New PrintPreviewDialog
ppvwPrinter.Document = pdPrinter
ppvwPrinter.Width = Screen.PrimaryScreen.Bounds.Width
ppvwPrinter.Height = Screen.PrimaryScreen.Bounds.Height
ppvwPrinter.PrintPreviewControl.Zoom = 0.66
ppvwPrinter.ShowDialog()
pdPrinter.Dispose()
ppvwPrinter.Dispose()
End Sub
Private Sub Begin_Printing(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles pdPrinter.BeginPrint
pdPrinter.DocumentName = "Test Document"
pdPrinter.PrintController = New Printing.StandardPrintController()
shtTotalPages = 3
shtPageNumber = 0
End Sub
Private Sub Test_PrintPage(ByVal sender As System.Object, ByVal e As PrintPageEventArgs) Handles pdPrinter.PrintPage
shtPageNumber += 1
Dim f As New Font("Arial", 18, FontStyle.Bold)
e.Graphics.PageUnit = GraphicsUnit.Millimeter
e.Graphics.DrawString("TEST PAGE " & shtPageNumber.ToString(), f, Brushes.Black, 15, 12 * shtPageNumber)
e.Graphics.DrawRectangle(Pens.Black, 10, 10, 210 - 10 - 10, 297 - 10 - 10)
f.Dispose()
If shtPageNumber < shtTotalPages Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
End Class