Поделиться через


Обзор компонента PrintDialog (Windows Forms .NET)

Печать в Windows Forms состоит в основном из использования PrintDocument компонента для печати пользователем. Элемент PrintPreviewDialog управления PrintDialog и PageSetupDialog компоненты предоставляют знакомый графический интерфейс для пользователей операционной системы Windows.

Компонент PrintDialog — это предварительно настроенное диалоговое окно, используемое для выбора принтера, выбора страниц для печати и определения других параметров, связанных с печатью, в приложениях под управлением Windows. Это простое решение для параметров принтера и печати вместо настройки собственного диалогового окна. Пользователям можно предоставить различные варианты печати документов: печать всех страниц, выбранного диапазона страниц или выделенного фрагмента текста. Использование стандартных диалоговых окон Windows помогает создавать приложения, основные функциональные возможности которых хорошо знакомы пользователям. Компонент PrintDialog наследует от класса CommonDialog.

Как правило, создается новый экземпляр PrintDocument компонента и задаются свойства, описывающие печать с помощью PrinterSettings и PageSettings классов. Print Вызов метода фактически выводит документ.

Работа с компонентом

Используйте метод PrintDialog.ShowDialog, чтобы отобразить диалоговое окно во время выполнения. Этот компонент имеет свойства, относящиеся либо к одному заданию печати (класс PrintDocument), либо к параметрам отдельного принтера (класс PrinterSettings). Один из двух, в свою очередь, может совместно использоваться несколькими принтерами.

Метод диалогового окна "Показать" помогает добавить диалоговое окно печати в форму. Компонент PrintDialog отображается в области в нижней части конструктора Windows Forms в Visual Studio.

Как записать входные данные пользователя из PrintDialog во время выполнения

Параметры, связанные с печатью во время разработки, можно задать. Иногда может потребоваться изменить эти параметры во время выполнения, скорее всего, из-за выбора, сделанного пользователем. Данные, введенные пользователем для печати документа, можно захватывать с помощью компонентов PrintDialog и PrintDocument. Ниже показано, как отобразить диалоговое окно печати для документа:

  1. Добавьте в форму компоненты PrintDialog и PrintDocument.

  2. Присвойте свойству Document объекта PrintDialog значение PrintDocument, которое было добавлено в форму.

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. Отобразите компонент PrintDialog с помощью метода ShowDialog.

    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        PrintDocument1.Print()
    End If
    
    // display show dialog and if user selects "Ok" document is printed
    if (printDialog1.ShowDialog() == DialogResult.OK)
        printDocument1.Print();
    
  4. Пользовательские параметры печати из диалогового окна будут скопированы в свойство PrinterSettings компонента PrintDocument.

Создание заданий печати

Краеугольным камнем процессов печати в Windows Forms является компонент PrintDocument, а если точнее, то событие PrintPage. Написав код для обработки события PrintPage, можно указать, что необходимо напечатать и как. Ниже показано создание задания печати.

  1. Добавьте в форму компонент PrintDocument.

  2. Напишите код для обработки события PrintPage .

    Вам придется закодировать собственную логику печати. Кроме того, вам придется указать материал для печати.

    В следующем примере кода в качестве материала в виде красного прямоугольника создается пример рисунка в обработчике PrintPage событий.

    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.FillRectangle(Brushes.Red, New Rectangle(100, 100, 100, 100))
    End Sub
    
    private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) =>
        e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 100, 100));
    

Вы также можете написать код для BeginPrint событий и EndPrint событий. Это поможет включить целое число, представляющее общее количество страниц для печати, которое уменьшается по мере печати каждой страницы.

Примечание.

Вы можете добавить компонент в форму PrintDialog, чтобы предоставить пользователям чистый и удобный пользовательский интерфейс. Document Задание свойства PrintDialog компонента позволяет задать свойства, связанные с документом печати, с которым вы работаете в форме.

Дополнительные сведения о специфике заданий печати Windows Forms, в том числе о том, как создать задание печати программным способом, см. в разделе PrintPageEventArgs.

Выполнение заданий печати

Чаще всего текстовые процессоры и другие приложения, связанные с печатью, предоставляют возможность отображения сообщения пользователям о завершении задания печати. Эту функцию можно предоставить в Windows Forms, обрабатывая событие EndPrint компонента PrintDocument.

Для выполнения следующей процедуры необходимо создать приложение на основе Windows с компонентом PrintDocument . Приведенная ниже процедура — это стандартный способ включения печати из приложения на основе Windows. Дополнительные сведения о печати из Windows Forms с помощью PrintDocument компонента см. в статье "Создание заданий печати".

  1. Установите свойство DocumentName элемента управления PrintDocument.

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. Напишите код для обработки события EndPrint .

    В следующем примере кода отображается окно сообщения о том, что печать документа была завершена.

    Private Sub PrintDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.EndPrint
        MessageBox.Show(PrintDocument1.DocumentName + " has finished printing.")
    End Sub
    
    private void PrintDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) =>
        MessageBox.Show(printDocument1.DocumentName + " has finished printing.");