PrintDialog — omówienie składnika (Windows Forms .NET)

Drukowanie w formularzach systemu Windows obejmuje przede wszystkim używanie PrintDocument składnika w celu umożliwienia użytkownikowi drukowania. Kontrolka PrintPreviewDialogPrintDialog i PageSetupDialog składniki udostępniają znajomy interfejs graficzny użytkownikom systemu operacyjnego Windows.

Składnik PrintDialog jest wstępnie skonfigurowanym oknie dialogowym służącym do wybierania drukarki, wybierania stron do drukowania i określania innych ustawień związanych z drukowaniem w aplikacjach opartych na systemie Windows. Jest to proste rozwiązanie dla ustawień związanych z drukarką i drukowaniem zamiast konfigurowania własnego okna dialogowego. Możesz umożliwić użytkownikom drukowanie wielu części dokumentów: drukowanie wszystkich, drukowanie wybranego zakresu stron lub drukowanie zaznaczenia. Korzystając ze standardowych okien dialogowych systemu Windows, można tworzyć aplikacje, których podstawowa funkcjonalność jest natychmiast znana użytkownikom. Składnik PrintDialog dziedziczy z CommonDialog klasy .

Zazwyczaj tworzysz nowe wystąpienie PrintDocument składnika i ustawiasz właściwości, które opisują, co należy wydrukować przy użyciu PrinterSettings klas i PageSettings . Print Wywołanie metody faktycznie wyświetla dokument.

Praca ze składnikiem

Użyj metody PrintDialog.ShowDialog, aby wyświetlić okno dialogowe w czasie wykonywania. Ten składnik ma właściwości odnoszące się do pojedynczego zadania drukowania (PrintDocument klasy) lub ustawień pojedynczej drukarki (PrinterSettings klasy). Z kolei jedna z tych dwóch może być współdzielona przez wiele drukarek.

Metoda okna dialogowego show ułatwia dodawanie okna dialogowego drukowania do formularza. Składnik PrintDialog zostanie wyświetlony na pasku zadań w dolnej części Projektant Formularzy systemu Windows w programie Visual Studio.

Jak przechwytywać dane wejściowe użytkownika z narzędzia PrintDialog w czasie wykonywania

Opcje związane z drukowaniem można ustawić w czasie projektowania. Czasami możesz zmienić te opcje w czasie wykonywania, najprawdopodobniej z powodu wyborów dokonanych przez użytkownika. Dane wejściowe użytkownika można przechwycić do drukowania dokumentu przy użyciu elementów PrintDialog i PrintDocument . W poniższych krokach pokazano wyświetlanie okna dialogowego drukowania dla dokumentu:

  1. Dodaj element PrintDialog i do PrintDocument formularza.

  2. Document Ustaw właściwość PrintDialog elementu na PrintDocument dodany do formularza.

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. PrintDialog Wyświetl składnik przy użyciu ShowDialog metody .

    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. Opcje drukowania użytkownika z okna dialogowego zostaną skopiowane do PrinterSettings właściwości PrintDocument składnika.

Jak tworzyć zadania drukowania

Podstawą drukowania w formularzach Systemu Windows jest PrintDocument składnik — w szczególności PrintPage zdarzenie. Pisząc kod do obsługi PrintPage zdarzenia, możesz określić, co ma być drukowane i jak go wydrukować. W poniższych krokach pokazano tworzenie zadania drukowania:

  1. PrintDocument Dodaj składnik do formularza.

  2. Napisz kod do obsługi PrintPage zdarzenia.

    Musisz kodować własną logikę drukowania. Ponadto należy określić materiał do wydrukowania.

    Jako materiał do wydrukowania, w poniższym przykładzie kodu przykładowa grafika w kształcie czerwonego prostokąta jest tworzona w procedurze PrintPage obsługi zdarzeń.

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

Możesz również napisać kod dla zdarzeń BeginPrint i EndPrint . Pomoże to uwzględnić liczbę całkowitą reprezentującą całkowitą liczbę stron do wydrukowania, która jest dekrementowana w miarę drukowania każdej strony.

Uwaga

Możesz dodać PrintDialog składnik do formularza, aby zapewnić użytkownikom czysty i wydajny interfejs użytkownika. Document Ustawienie właściwości PrintDialog składnika umożliwia ustawienie właściwości związanych z dokumentem wydruku, z którym pracujesz w formularzu.

Aby uzyskać więcej informacji na temat specyfiki zadań drukowania formularzy systemu Windows, w tym sposobu programowego tworzenia zadania drukowania, zobacz PrintPageEventArgs.

Jak ukończyć zadania drukowania

Często procesory tekstów i inne aplikacje, które obejmują drukowanie, zapewniają użytkownikom możliwość wyświetlenia komunikatu dla użytkowników, że zadanie drukowania zostało ukończone. Tę funkcję można udostępnić w formularzach systemu Windows, obsługując EndPrint zdarzenie PrintDocument składnika.

Poniższa procedura wymaga utworzenia aplikacji opartej na systemie Windows ze składnikiem PrintDocument . Poniższa procedura jest standardowym sposobem włączania drukowania z aplikacji opartej na systemie Windows. Aby uzyskać więcej informacji na temat drukowania z formularzy systemu Windows przy użyciu PrintDocument składnika, zobacz How to create print jobs (Jak tworzyć zadania drukowania).

  1. DocumentName Ustaw właściwość PrintDocument składnika.

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. Napisz kod do obsługi EndPrint zdarzenia.

    W poniższym przykładzie kodu zostanie wyświetlone pole komunikatu wskazujące, że dokument zakończył drukowanie.

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