Übersicht über die PrintDialog-Komponente (Windows Forms .NET)

Das Drucken in Windows Forms besteht hauptsächlich aus der Verwendung der PrintDocument-Komponente, um dem Benutzer das Drucken zu ermöglichen. Das PrintPreviewDialog-Steuerelement sowie die Komponenten PrintDialog und PageSetupDialog bieten Benutzern des Windows-Betriebssystems eine vertraute grafische Benutzeroberfläche.

Die PrintDialog-Komponente ist ein vorkonfiguriertes Dialogfeld zum Auswählen eines Druckers, zum Auswählen der zu druckenden Seiten sowie zum Bestimmen weiterer druckbezogener Einstellungen in Windows-basierten Anwendungen. Es ist eine einfache Lösung für Drucker- und Druckeinstellungen, anstatt Ihr eigenes Dialogfeld zu konfigurieren. Sie können Benutzern ermöglichen, diverse Teile ihrer Dokumente zu drucken: Alles drucken, Drucken eines ausgewählten Seitenbereichs oder Drucken einer Auswahl. Durch die Verwendung von Windows-Standarddialogfeldern erstellen Sie Anwendungen, deren Basisfunktionen Benutzern sofort vertraut sind. Die PrintDialog-Komponente erbt von der CommonDialog-Klasse.

In der Regel erstellen Sie eine neue Instanz der PrintDocument-Komponente und legen die Eigenschaften fest, die beschreiben, was mit den Klassen PrinterSettings und PageSettings gedruckt werden soll. Der Aufruf der Print-Methode druckt das Dokument tatsächlich.

Arbeiten mit der Komponente

Verwenden Sie die PrintDialog.ShowDialog-Methode, um das Dialogfeld zur Laufzeit anzuzeigen. Diese Komponente hat Eigenschaften, die sich entweder auf einen einzelnen Druckauftrag (PrintDocument-Klasse) oder auf die Einstellungen eines einzelnen Druckers (PrinterSettings-Klasse) beziehen. Einer der beiden Komponenten kann wiederum von mehreren Druckern freigegeben werden.

Die Methode zum Anzeigen des Dialogfelds hilft Ihnen beim Hinzufügen des Dialogfelds „Drucken“ zum Formular. Die PrintDialog-Komponente wird auf der Komponentenleiste im unteren Bereich des Windows Forms-Designers in Visual Studio angezeigt.

Erfassen von Benutzereingaben in eine PrintDialog-Komponente zur Laufzeit

Sie können die Optionen für den Druck bereits beim Entwurf festlegen. Manchmal möchten Sie diese Optionen während der Laufzeit ändern, höchstwahrscheinlich aufgrund von Entscheidungen des Benutzers. Sie können Benutzereingaben für das Drucken eines Dokuments mithilfe der Komponenten PrintDialog und PrintDocument erfassen. Die folgenden Schritte veranschaulichen das Anzeigen des Druckdialogfelds für ein Dokument:

  1. Fügen Sie Ihrem Formular eine PrintDialog-Komponente und eine PrintDocument-Komponente hinzu.

  2. Legen Sie die Eigenschaft Document des PrintDialog-Elements auf das dem Formular hinzugefügte PrintDocument fest.

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. Zeigen Sie die PrintDialog-Komponente mithilfe der ShowDialog-Methode an.

    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. Die ausgewählten Druckoptionen des Benutzers aus dem Dialogfeld werden in die PrinterSettings-Eigenschaft der PrintDocument-Komponente kopiert.

Erstellen von Druckaufträgen

Die Grundlage des Druckens in Windows Forms ist die PrintDocument-Komponente – genauer gesagt das PrintPage-Ereignis. Wenn Sie Code zum Behandeln des PrintPage-Ereignisses schreiben, können Sie angeben, was und wie es gedruckt werden soll. Die folgenden Schritte veranschaulichen das Erstellen eines Druckauftrags:

  1. Fügen Sie Ihrem Formular eine PrintDocument-Komponente hinzu.

  2. Erstellen Sie Code zur Behandlung des PrintPage -Ereignisses.

    Sie müssen Ihre eigene Drucklogik programmieren. Darüber hinaus müssen Sie das zu druckende Material angeben.

    Als Druckmaterial wird im folgenden Codebeispiel im Ereignishandler PrintPage eine Beispielgrafik in Form eines roten Rechtecks erstellt.

    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));
    

Sie können auch Code für die Ereignisse BeginPrint und EndPrint schreiben. Er ist hilfreich, wenn Sie eine ganze Zahl angeben, die die Gesamtzahl der zu druckenden Seiten angibt und die mit jeder gedruckten Seite verringert wird.

Hinweis

Sie können Ihrem Formular eine PrintDialog-Komponente hinzufügen, um Ihren Benutzern eine saubere und effiziente Benutzeroberfläche (UI) bereitzustellen. Durch Festlegen der Document-Eigenschaft der PrintDialog-Komponente können Sie Eigenschaften im Zusammenhang mit dem Druckdokument festlegen, mit dem Sie an Ihrem Formular arbeiten.

Weitere Informationen zu den Besonderheiten von Windows Forms-Druckaufträgen, einschließlich des programmgesteuerten Erstellens eines Druckauftrags, finden Sie unter PrintPageEventArgs.

Abschließen von Druckaufträgen

Häufig enthalten Textverarbeitungsprogramme und andere Anwendungen, die das Drucken beinhalten, eine Möglichkeit zur Anzeige einer Nachricht für Benutzer*innen, die einen Druckauftrag abgeschlossen haben. Sie können diese Funktionalität in Ihrem Windows Forms-Modell bereitstellen, indem Sie das EndPrint-Ereignis der PrintDocument-Komponente bearbeiten.

Im folgenden Verfahren müssen Sie eine Windows-basierte Anwendung mit einer PrintDocument-Komponente darin erstellt haben. Das unten beschriebene Verfahren ist die Standardmethode zum Aktivieren des Druckvorgangs aus einer Windows-basierten Anwendung. Weitere Informationen zum Drucken von Windows Forms-Formularen mithilfe der PrintDocument-Komponente finden Sie unter Erstellen von Druckaufträgen.

  1. Legen Sie die DocumentName-Eigenschaft der PrintDocument-Komponente fest.

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. Erstellen Sie Code zur Behandlung des EndPrint -Ereignisses.

    Im folgenden Codebeispiel wird ein Benachrichtigungsfeld angezeigt, das angibt, dass der Druckvorgang für das Dokument abgeschlossen ist.

    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.");