Freigeben über


PrintDialog-Komponentenübersicht

Das Drucken in Windows Forms besteht in erster Linie darin, die PrintDocument Komponente zu verwenden, um dem Benutzer das Drucken zu ermöglichen. Das PrintPreviewDialog Steuerelement und PrintDialogdie PageSetupDialog Komponenten bieten Benutzern des Windows-Betriebssystems eine vertraute grafische Oberfläche.

Die PrintDialog Komponente ist ein vorkonfiguriertes Dialogfeld, das zum Auswählen eines Druckers, zum Auswählen der zu druckden Seiten und zum Bestimmen anderer druckbezogener Einstellungen in Windows-basierten Anwendungen verwendet wird. Es ist eine einfache Lösung für Drucker- und Druckeinstellungen, anstatt Ihr eigenes Dialogfeld zu konfigurieren. Sie können Benutzern ermöglichen, viele Teile ihrer Dokumente zu drucken: alle drucken, einen ausgewählten Seitenbereich drucken oder eine Auswahl drucken. Indem Sie sich auf Standarddialogfelder von Windows verlassen, erstellen Sie Anwendungen, deren grundlegende Funktionalität den Benutzern sofort vertraut ist. 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 PrinterSettings Und-Klassen 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 verfügt über Eigenschaften, die sich auf einen einzelnen Druckauftrag (PrintDocument Klasse) oder die Einstellungen eines einzelnen Druckers (PrinterSettings Klasse) beziehen. Einer der beiden wiederum kann von mehreren Druckern gemeinsam genutzt werden.

Die Methode zum Anzeigen des Dialogfelds hilft Ihnen beim Hinzufügen des Druckdialogfelds zum Formular. Die PrintDialog Komponente wird in der Taskleiste unten im Windows Forms-Designer in Visual Studio angezeigt.

Wie man Benutzereingaben aus einem PrintDialog zur Laufzeit erfasst

Sie können zur Entwurfszeit Optionen für das Drucken festlegen. Manchmal möchten Sie diese Optionen möglicherweise zur Laufzeit ändern, höchstwahrscheinlich aufgrund der vom Benutzer getroffenen Auswahl. Sie können Benutzereingaben für das Drucken eines Dokuments mithilfe der PrintDialogPrintDocument Komponenten erfassen. Die folgenden Schritte veranschaulichen das Anzeigen des Druckdialogfelds für ein Dokument:

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

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

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. Zeigen Sie die PrintDialog Komponente mithilfe der Methode ShowDialog 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 Druckoptionen des Benutzers aus dem Dialogfeld werden in die PrinterSettings Eigenschaft der PrintDocument Komponente kopiert.

So erstellen Sie Druckaufträge

Die Grundlage für das Drucken 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. Schreiben Sie Code zur Behandlung des PrintPage-Ereignisses.

    Sie müssen ihre eigene Drucklogik codieren und das zu druckde Material angeben.

    Als Material zum Drucken wird im folgenden Codebeispiel eine Beispielgrafik in der Form eines roten Rechtecks im PrintPage Ereignishandler 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));
    

Möglicherweise möchten Sie auch Code für die BeginPrint- und EndPrint-Ereignisse schreiben. Sie hilft dabei, eine ganze Zahl einzuschließen, die die Gesamtzahl der zu druckende Seiten darstellt, die bei jedem Drucken dekrementiert werden.

Hinweis

Sie können Ihrem Formular eine PrintDialog Komponente hinzufügen, um Ihren Benutzern eine übersichtliche und effiziente Benutzeroberfläche (UI) bereitzustellen. Wenn Sie die Document Eigenschaft der PrintDialog Komponente festlegen, 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 der programmgesteuerten Erstellung eines Druckauftrags, finden Sie unter PrintPageEventArgs.

Anleitung zum Abschließen von Druckaufträgen

Häufig bieten Textprozessoren und andere Anwendungen, die das Drucken umfassen, die Möglichkeit, Benutzern eine Meldung anzuzeigen, dass ein Druckauftrag abgeschlossen ist. Sie können diese Funktionalität in Ihrem Windows Forms-Modell bereitstellen, indem Sie das EndPrint-Ereignis der PrintDocument-Komponente behandeln.

Das folgende Verfahren erfordert, dass Sie eine Windows-basierte Anwendung mit einer PrintDocument Komponente erstellt haben. Dieses Verfahren ist die Standardmethode zum Aktivieren des Druckens aus einer Windows-basierten Anwendung. Weitere Informationen zum Drucken aus Windows Forms 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. Schreiben Sie Code zur Behandlung des EndPrint-Ereignisses.

    Im folgenden Codebeispiel wird ein Meldungsfeld angezeigt, das angibt, dass das Drucken des Dokuments 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.");