Share via


Panoramica del componente PrintDialog (Windows Form .NET)

La stampa in Windows Form consiste principalmente nell'utilizzare il PrintDocument componente per consentire all'utente di stampare. Il PrintPreviewDialog controllo PrintDialog e PageSetupDialog i componenti forniscono un'interfaccia grafica familiare agli utenti del sistema operativo Windows.

Il PrintDialog componente è una finestra di dialogo preconfigurato usata per selezionare una stampante, scegliere le pagine da stampare e determinare altre impostazioni correlate alla stampa nelle applicazioni basate su Windows. Si tratta di una soluzione semplice per le impostazioni relative alla stampante e alla stampa anziché configurare una finestra di dialogo personalizzata. È possibile consentire agli utenti di stampare molte parti dei documenti: stampare tutti, stampare un intervallo di pagine selezionato o stampare una selezione. Basandosi sulle finestre di dialogo standard di Windows è quindi possibile creare applicazioni le cui funzionalità di base sono immediatamente familiari agli utenti. Il PrintDialog componente eredita dalla CommonDialog classe .

In genere, si crea una nuova istanza del PrintDocument componente e si impostano le proprietà che descrivono cosa stampare usando le PrinterSettings classi e PageSettings . La chiamata al Print metodo stampa effettivamente il documento.

Utilizzo del componente

Utilizzare il metodo PrintDialog.ShowDialog per visualizzare la finestra di dialogo in fase di esecuzione. Questo componente ha proprietà correlate a un singolo processo di stampa (PrintDocument classe) o alle impostazioni di una singola stampante (PrinterSettings classe). Uno dei due, a sua volta, può essere condiviso da più stampanti.

Il metodo mostra finestra di dialogo consente di aggiungere la finestra di dialogo stampa al modulo. Il PrintDialog componente viene visualizzato nell'area di notifica nella parte inferiore della finestra di progettazione Windows Form in Visual Studio.

Come acquisire l'input dell'utente da un oggetto PrintDialog in fase di esecuzione

È possibile impostare le opzioni relative alla stampa in fase di progettazione. A volte è possibile modificare queste opzioni in fase di esecuzione, probabilmente a causa delle scelte effettuate dall'utente. È possibile acquisire l'input dell'utente per la stampa di un documento usando i PrintDialog componenti e PrintDocument . I passaggi seguenti illustrano la visualizzazione della finestra di dialogo di stampa per un documento:

  1. Aggiungere un PrintDialog elemento e un PrintDocument componente al modulo.

  2. Impostare la Document proprietà dell'oggetto PrintDialog sull'oggetto PrintDocument aggiunto al form.

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. Visualizzare il PrintDialog componente usando il ShowDialog metodo .

    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        PrintDocument1.Print()
    End If
    
    // display show dialog and if user selects "Ok" document is printed
    if (printDialog1.ShowDialog() == DialogResult.OK)
        printDocument1.Print();
    
  4. Le scelte di stampa dell'utente dalla finestra di dialogo verranno copiate nella PrinterSettings proprietà del PrintDocument componente.

Come creare processi di stampa

La base della stampa in Windows Form è il PrintDocument componente, in particolare l'eventoPrintPage. Scrivendo codice per gestire l'evento PrintPage , è possibile specificare cosa stampare e come stamparlo. I passaggi seguenti illustrano la creazione di un processo di stampa:

  1. Aggiungere un PrintDocument componente al modulo.

  2. Scrivere codice per gestire l'evento PrintPage .

    Sarà necessario scrivere codice per la logica di stampa personalizzata. Inoltre, dovrai specificare il materiale da stampare.

    Come materiale da stampare, nell'esempio di codice seguente viene creato un elemento grafico di esempio nella forma di un rettangolo rosso nel PrintPage gestore eventi.

    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.FillRectangle(Brushes.Red, New Rectangle(100, 100, 100, 100))
    End Sub
    
    private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) =>
        e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 100, 100));
    

È anche possibile scrivere codice per gli BeginPrint eventi e EndPrint . Consente di includere un numero intero che rappresenta il numero totale di pagine da stampare decrementato durante la stampa di ogni pagina.

Nota

È possibile aggiungere un PrintDialog componente al modulo per fornire agli utenti un'interfaccia utente pulita ed efficiente. L'impostazione della Document proprietà del PrintDialog componente consente di impostare le proprietà correlate al documento di stampa che si sta usando nel modulo.

Per altre informazioni sulle specifiche di Windows Form processi di stampa, tra cui come creare un processo di stampa a livello di codice, vedere PrintPageEventArgs.

Come completare i processi di stampa

Spesso, i word processor e altre applicazioni che coinvolgono la stampa offrono la possibilità di visualizzare un messaggio agli utenti che un processo di stampa è stato completato. È possibile fornire questa funzionalità nel Windows Form gestendo l'evento EndPrint del PrintDocument componente.

La procedura seguente richiede che sia stata creata un'applicazione basata su Windows con un PrintDocument componente. La procedura riportata di seguito è il modo standard per abilitare la stampa da un'applicazione basata su Windows. Per altre informazioni sulla stampa da Windows Form tramite il PrintDocument componente, vedere Come creare processi di stampa.

  1. Impostare la DocumentName proprietà del PrintDocument componente.

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. Scrivere codice per gestire l'evento EndPrint .

    Nell'esempio di codice seguente viene visualizzata una finestra di messaggio che indica che il documento ha terminato la stampa.

    Private Sub PrintDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.EndPrint
        MessageBox.Show(PrintDocument1.DocumentName + " has finished printing.")
    End Sub
    
    private void PrintDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) =>
        MessageBox.Show(printDocument1.DocumentName + " has finished printing.");