Panoramica del componente PrintDialog (Windows Form .NET)
La stampa in Windows Form consiste principalmente nell'usare il componente PrintDocument per consentire all'utente di stampare. I componenti PrintPreviewDialog, PrintDialog e PageSetupDialog forniscono un'interfaccia grafica familiare agli utenti del sistema operativo Windows.
Il componente PrintDialog
è 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, si creano applicazioni la cui funzionalità di base è immediatamente familiare agli utenti. Il componente PrintDialog eredita dalla classe CommonDialog.
In genere, si crea una nuova istanza del componente PrintDocument e si impostano le proprietà che descrivono cosa stampare usando le classi PrinterSettings e PageSettings. La chiamata al metodo Print 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 (classePrintDocument) 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 componente PrintDialog viene visualizzato nella barra degli strumenti nella parte inferiore di Progettazione Windows Form in Visual Studio.
Come acquisire l'input dell'utente da PrintDialog durante l'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 il PrintDialog e i componenti PrintDocument. I passaggi seguenti illustrano la visualizzazione della finestra di dialogo di stampa per un documento:
Aggiungere un PrintDialog e un componente PrintDocument al modulo.
Impostare la proprietà Document del PrintDialog sul PrintDocument aggiunto al form.
PrintDialog1.Document = PrintDocument1
printDialog1.Document = printDocument1;
Visualizzare il componente PrintDialog utilizzando il metodo ShowDialog.
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();
Le scelte di stampa dell'utente dalla finestra di dialogo verranno copiate nella proprietà PrinterSettings del componente PrintDocument.
Come creare lavori di stampa
La base della stampa in Windows Form è il componente PrintDocument, in particolare l'evento PrintPage. 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:
Aggiungi un componente PrintDocument al modulo.
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 grafico di esempio nella forma di un rettangolo rosso nel gestore eventi PrintPage.
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 eventi BeginPrint e EndPrint. Consente di includere un numero intero che rappresenta il numero totale di pagine da stampare, decrementato man mano che ogni pagina viene stampata.
Nota
È possibile aggiungere un componente PrintDialog al modulo per fornire agli utenti un'interfaccia utente pulita ed efficiente. L'impostazione della proprietà Document del componente PrintDialog consente di impostare le proprietà correlate al documento di stampa in uso nel modulo.
Per ulteriori informazioni sulle specifiche dei processi di stampa di Windows Forms, incluso 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à in Windows Form gestendo l'evento EndPrint del componente PrintDocument.
La procedura seguente richiede di aver creato un'applicazione basata su Windows con un componente PrintDocument su di esso. 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 componente PrintDocument, vedere Come creare processi di stampa.
Impostare la proprietà DocumentName del componente PrintDocument.
PrintDocument1.DocumentName = "SamplePrintApp"
printDocument1.DocumentName = "SamplePrintApp";
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.");
.NET Desktop feedback