如何:调用打印对话框
若要提供从应用程序进行打印的功能,只需创建并打开 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 方法或 XpsDocumentWriter 的 Write 和 WriteAsync 方法之一。 有关此内容的详细信息,请参阅以编程方式打印 XPS 文件。