Элемент PrintDialog и конфигурация печати. Самостоятельное программирование печати.
Пользователь программы должен иметь возможность выбрать принтер и внести другие изменения в конфигурацию печати. Такую возможность предоставляет элемент PrintDialog. В программе соответствующий фрагмент может выглядеть примерно так:
Private Sub Buttonl_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs)Handles Buttonl.Click Dim PhntDialogl As New PrintDialog() ' Следующая строка необходима, потому что информация ' объекта PrinterSettings нужна объекту PrintDialog перед выводом PrintDialogl.Document = PrintDocumentl If PrintDialogl.ShowDialog() = DialogResult.OK Then PrintDocumentl. PrintO End If End Sub
Выделенная строка сообщает экземпляру PrintOialog, что связанный с ним документ должен быть экземпляром PrintDocumentl (предполагается, что этот объект был создан ранее). Эта строка необходима, поскольку элемент PrintDialog должен получить некоторые параметры печати (в виде объекта PrintSettings) перед выводом окна. Чтобы передать ему эту информацию, проще всего назначить объект PrintDocument свойству Document.
Самостоятельное программирование печати
Во многих случаях вполне достаточно элемента PrintDialog и автоматически сгенерированного кода, но время от времени требуется реализовать нестандартные возможности печати. Для этого необходимо написать процедуру со следующей сигнатурой:
Private Sub ProcedureToDoThePrinting(ByVal Sender As Object,_ ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Затем процедура при помощи делегата подключается к событию PrintPage класса PrintDocument. Например, для вызова объекта aPrintDocument класса PrintDocument с приведенной выше процедурой aPrintDocument_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