Compartir a través de


Cómo: Invocar un cuadro de diálogo de impresión

Para proporcionar la capacidad de imprimir desde la aplicación, simplemente puede crear y abrir un objeto PrintDialog.

Ejemplo

El control PrintDialog proporciona un único punto de entrada para UI, configuración y envío de trabajos XPS. El control es fácil de usar y se puede crear una instancia mediante el marcado o el código del lenguaje de marcado de aplicaciones extensibles (XAML). En el ejemplo siguiente se muestra cómo crear instancias y abrir el control en el código y cómo imprimir desde él. También se muestra cómo asegurarse de que el cuadro de diálogo proporcionará al usuario la opción de establecer un intervalo específico de páginas. En el código de ejemplo se supone que hay un archivo FixedDocumentSequence.xps en la raíz de la unidad 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

Una vez abierto el cuadro de diálogo, los usuarios podrán seleccionar entre las impresoras instaladas en su equipo. También tendrán la opción de seleccionar Microsoft XPS Document Writer para crear un archivo XML Paper Specification (XPS) en lugar de imprimir.

Nota:

El control System.Windows.Controls.PrintDialog de WPF, que se describe en este tema, no debe confundirse con el componente System.Windows.Forms.PrintDialog de Windows Forms.

En realidad, puede usar el método PrintDocument sin abrir nunca el cuadro de diálogo. En ese sentido, el control se puede usar como componente de impresión no visto. Pero por razones de rendimiento, sería mejor utilizar el método AddJob o uno de los muchos métodos Write y WriteAsync de XpsDocumentWriter. Para obtener más información sobre esto, vea Imprimir archivos XPS mediante programación.

Vea también