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


Обзор компонента PrintDialog

Печать в 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.");