Иллюстрированный самоучитель по VB.NET

Самостоятельное программирование печати


Во многих случаях вполне достаточно элемента 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



Содержание раздела