Como invocar uma caixa de diálogo ImprimirHow to: Invoke a Print Dialog

Para fornecer a capacidade de imprimir a partir de seu aplicativo, você pode simplesmente criar e abrir um PrintDialog objeto.To provide the ability to print from you application, you can simply create and open a PrintDialog object.

ExemploExample

O PrintDialog controle fornece um único ponto de entrada para Interface de UsuárioUI, configuração, e XPSXPS envio de trabalho.The PrintDialog control provides a single entry point for Interface de UsuárioUI, configuration, and XPSXPS job submission. O controle é fácil de usar e pode ser instanciado usando marcação ou código XAML (linguagem XAML)Extensible Application Markup Language (XAML).The control is easy to use and can be instantiated by using XAML (linguagem XAML)Extensible Application Markup Language (XAML) markup or code. O exemplo a seguir demonstra como instanciar e abrir o controle no código e como imprimir por meio dele.The following example demonstrates how to instantiate and open the control in code and how to print from it. Também mostra como assegurar que o diálogo dê ao usuário a opção de definir um intervalo específico de páginas.It also shows how to ensure that the dialog will give the user the option of setting a specific range of pages. O código do exemplo pressupõe que existe um arquivo FixedDocumentSequence.xps na raiz da unidade C:.The example code assumes that there is a file FixedDocumentSequence.xps in the root of the C: drive.

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

Uma vez que a caixa de diálogo estiver aberta, os usuários poderão selecionar as impressoras instaladas em seu computador.Once the dialog is open, users will be able to select from the printers installed on their computer. Eles também terão a possibilidade de selecionar Microsoft XPS Document Writer para criar um arquivo XPS (XML Paper Specification)XML Paper Specification (XPS) ao invés de imprimir.They will also have the option of selecting the Microsoft XPS Document Writer to create an XPS (XML Paper Specification)XML Paper Specification (XPS) file instead of printing.

Observação

O System.Windows.Controls.PrintDialog controle de WPFWPF, que é discutido neste tópico, não deve ser confundido com o System.Windows.Forms.PrintDialog componente de formulários do Windows.The System.Windows.Controls.PrintDialog control of WPFWPF, which is discussed in this topic, should not be confused with the System.Windows.Forms.PrintDialog component of Windows Forms.

Estritamente falando, você pode usar o PrintDocument método sem abrir a caixa de diálogo.Strictly speaking, you can use the PrintDocument method without ever opening the dialog. Assim, o controle pode ser utilizado como um componente de impressão não visto.In that sense, the control can be used as an unseen printing component. Mas por motivos de desempenho, é melhor usar tanto o AddJob método ou um dos muitos Write e WriteAsync métodos do XpsDocumentWriter.But for performance reasons, it would be better to use either the AddJob method or one of the many Write and WriteAsync methods of the XpsDocumentWriter. Para saber mais, consulte Impressão Programada de Arquivos XPS.For more about this, see Programmatically Print XPS Files and .

Consulte tambémSee Also

PrintDialog
Documentos no WPFDocuments in WPF
Visão Geral da ImpressãoPrinting Overview
Microsoft XPS Document WriterMicrosoft XPS Document Writer