Condividi tramite


Procedura: Richiamare una finestra di dialogo di stampa

Per offrire la possibilità di stampare dall'applicazione, è sufficiente creare e aprire un oggetto PrintDialog.

Esempio

Il controllo PrintDialog offre un unico punto di accesso per l'interfaccia utente, la configurazione e l'invio di lavori XPS. Il controllo è facile da usare e può essere creata un'istanza usando markup XAML (Extensible Application Markup Language) o codice. Nell'esempio seguente viene illustrato come creare un'istanza e aprire il controllo nel codice e come stamparlo. Viene inoltre illustrato come assicurarsi che la finestra di dialogo consentirà all'utente di impostare un intervallo specifico di pagine. Il codice di esempio presuppone che sia presente un file FixedDocumentSequence.xps nella radice dell'unità 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 volta aperta la finestra di dialogo, gli utenti potranno selezionare le stampanti installate nel computer. Avranno anche la possibilità di selezionare il Microsoft XPS Document Writer per creare un file XPS (XML Paper Specification) invece di stampare.

Nota

Il controllo System.Windows.Controls.PrintDialog di WPF, illustrato in questo argomento, non deve essere confuso con il componente System.Windows.Forms.PrintDialog di Windows Form.

In senso stretto, è possibile usare il metodo PrintDocument senza aprire mai il dialogo. In tal senso, il controllo può essere utilizzato come componente di stampa non visualizzato. Tuttavia, per motivi di prestazioni, sarebbe preferibile usare il metodo AddJob o uno dei numerosi metodi Write e WriteAsync del XpsDocumentWriter. Per ulteriori informazioni, vedere stampare programmaticamente file XPS.

Vedere anche