Практическое руководство. Вызов диалогового окна печати

Чтобы предоставить возможность печати из приложения, можно просто создать и открыть объект PrintDialog.

Пример

Элемент управления PrintDialog предоставляет единую точку входа для пользовательского интерфейса, конфигурации и отправки задания XPS. Этот элемент управления прост в использовании и может быть создан с помощью разметки или кода языка разметки XAML. В следующем примере показано, как создать экземпляр элемента управления, открыть этот элемент управления в коде и вывести его на печать. Также показано, как можно убедиться в том, что диалоговое окно предоставит пользователю возможность задать определенный диапазон страниц. В контексте этого примера кода предполагается, что файл FixedDocumentSequence.xps находится в корневом каталоге диска C: .

private void InvokePrint(object sender, RoutedEventArgs e)
    {
        // Create the print dialog object and set options
        PrintDialog pDialog = new PrintDialog();
        pDialog.PageRangeSelection = PageRangeSelection.AllPages;
        pDialog.UserPageRangeEnabled = true;

        // Display the dialog. This returns true if the user presses the Print button.
        Nullable<Boolean> print = pDialog.ShowDialog();
        if (print == true)
        {
            XpsDocument xpsDocument = new XpsDocument("C:\\FixedDocumentSequence.xps", FileAccess.ReadWrite);
            FixedDocumentSequence fixedDocSeq = xpsDocument.GetFixedDocumentSequence();
            pDialog.PrintDocument(fixedDocSeq.DocumentPaginator, "Test print job");
        }
    }
Private Sub InvokePrint(ByVal sender As Object, ByVal e As RoutedEventArgs)
        ' Create the print dialog object and set options
        Dim pDialog As New PrintDialog()
        pDialog.PageRangeSelection = PageRangeSelection.AllPages
        pDialog.UserPageRangeEnabled = True

        ' Display the dialog. This returns true if the user presses the Print button.
        Dim print? As Boolean = pDialog.ShowDialog()
        If print = True Then
            Dim xpsDocument As New XpsDocument("C:\FixedDocumentSequence.xps", FileAccess.ReadWrite)
            Dim fixedDocSeq As FixedDocumentSequence = xpsDocument.GetFixedDocumentSequence()
            pDialog.PrintDocument(fixedDocSeq.DocumentPaginator, "Test print job")
        End If
End Sub

После открытия диалогового окна пользователи смогут выбрать принтеры, установленные на компьютере. Кроме того, они смогут выбрать модуль записи документов Microsoft XPS, чтобы создать файл XPS вместо вывода его на печать.

Примечание.

Элемент управления System.Windows.Controls.PrintDialog WPF, который рассматривается в этом разделе, не следует путать с компонентом System.Windows.Forms.PrintDialog Windows Forms.

Строго говоря, можно использовать метод PrintDocument без открытия диалогового окна. В этом смысле элемент управления можно использовать как невидимый компонент печати. Однако по соображениям производительности было бы лучше использовать метод AddJob или один из многих методов Write и WriteAsync в XpsDocumentWriter. Дополнительные сведения об этом см. в разделе Программная печать XPS-файлов.

См. также