Самостоятельное программирование печати
Во многих случаях вполне достаточно элемента Pri ntDialog и автоматически сгенерированного кода, но время от времени требуется реализовать нестандартные возможности печати. Для этого необходимо написать процедуру со следующей сигнатурой:
Private Sub ProcedureToDoThePrinting(ByVal Sender As Object,_
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Затем процедура при помощи делегата подключается к событию PrintPage класса PrintDocument. Например, для вызова объекта aPrintDocument класса PrintDocument с приведенной выше процедурой aPri ntDocument_PrintPage используется команда следующего вида:
AddHandler aPrintDocument.PrintPage, AddressOf Me.aPrintDocument_PrintPage
В следующем фрагменте показано, как выглядит возможная реализация печати в обработчике команды меню Print:
Private Sub mnuPrint_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs)Handles mnuPrint.Click
Dim aPrintDocument As New PrintDocument()
AddHandler aPrintDocument.PrintPage.
AddressOf Me.aPrintDocument_PrintPage
aPrintDocument.Print()
End Sub
Рис. 8.25. Режим предварительного просмотра
Предварительный просмотр
Печать простейших документов в VB .NET требует несколько больших усилий, чем в VB6, зато режим предварительного просмотра реализуется гораздо проще. Для этого от вас потребуется лишь назначить объект PrintDocument свойству Document экземпляра PrintPrevl ewDialog. Так, следующий фрагмент почти полностью совпадает с кодом, приведенным выше, однако он реализует предварительный просмотр вместо вывода на принтер. Результаты его выполнения показаны на рис. 8.25:
Private Sub btnPreview_Click(ByVal sender As System.Object.
ByVal e As System.EventArgs) Handles btnPreview.Click
Dim PrintPreviewDialogl As New PrlntPreviewDialog()
PrintPreviewDlalogl.Document = PrintDocumentl
If PrintPreviewDialogl.ShowDialog() = DialogResult.OK Then
PrintDocumentl.Print()
End If
End Sub