如何:调用打印对话框

若要提供从应用程序进行打印的功能,只需创建并打开 PrintDialog 对象即可。

示例

PrintDialog 控件为 UI、配置和 XPS 作业提交提供单一入口点。 该控件易于使用,可以使用 Extensible Application Markup Language (XAML) 标记或代码进行实例化。 下面的示例演示如何在代码中实例化和打开控件,以及如何从中打印。 它还演示如何确保对话框将为用户提供设置特定页面范围的选项。 示例代码假定 C: 驱动器的根目录中有一个 FixedDocumentSequence.xps 文件。

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 文档编写器来创建 XML 纸规范 (XPS) 文件,而不是打印。

注意

本主题中讨论的 WPF 的 System.Windows.Controls.PrintDialog 控件不应与 Windows 窗体的 System.Windows.Forms.PrintDialog 组件混淆。

严格地说,可在没有打开对话框的情况下使用 PrintDocument 方法。 从这个意义上说,该控件可用作不可见的打印组件。 但是出于性能原因,最好使用 AddJob 方法或 XpsDocumentWriterWriteWriteAsync 方法之一。 有关此内容的详细信息,请参阅以编程方式打印 XPS 文件

另请参阅