PrintDialog 元件概觀 (Windows Forms .NET)

Windows Forms 中的列印主要是使用 PrintDocument 元件讓使用者列印。 控制項 PrintPreviewDialogPrintDialogPageSetupDialog 元件為 Windows 作業系統使用者提供熟悉的圖形化介面。

元件 PrintDialog 是預先設定的對話方塊,可用來選取印表機、選擇要列印的頁面,以及決定 Windows 應用程式中的其他列印相關設定。 這是印表機和列印相關設定的簡單解決方案,而不是設定您自己的對話方塊。 您可以讓使用者列印其檔的許多部分:全部列印、列印選取的頁面範圍或列印選取範圍。 藉由標準 Windows 對話方塊,建立使用者可立即熟悉基本功能的應用程式。 元件 PrintDialog 繼承自 CommonDialog 類別。

一般而言,您會建立元件的新實例, PrintDocument 並設定描述如何使用 PrinterSettingsPageSettings 類別列印的屬性。 呼叫 Print 方法會實際列印檔案。

使用元件

使用 PrintDialog.ShowDialog 方法,在執行時間顯示對話方塊。 此元件具有與單一列印工作(類別)或個別印表機 ( PrintDocumentPrinterSettings 類別) 設定相關的屬性。 其中一個接著可由多個印表機共用。

顯示對話方塊方法可協助您將列印對話方塊新增至表單。 元件 PrintDialog 會出現在 Visual Studio 中 Windows Forms 設計工具底部的匣中。

如何在執行時間從 PrintDialog 擷取使用者輸入

您可以在設計階段設定與列印相關的選項。 有時候您可能會想要在執行時間變更這些選項,很可能是因為使用者所做的選擇。 您可以使用 和 PrintDocument 元件來擷取使用者輸入來列印檔案 PrintDialog 。 下列步驟示範如何顯示檔的列印對話方塊:

  1. PrintDialog將 和 PrintDocument 元件新增至表單。

  2. DocumentPrintDialog 屬性設定為 PrintDocument 加入至表單的 。

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. PrintDialog使用 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();
    
  4. 對話方塊的列印選項將會複製到 PrinterSettings 元件的 屬性 PrintDocument

如何建立列印工作

Windows Forms 中列印的基礎是 PrintDocument 元件,更具體地說是 PrintPage 事件。 藉由撰寫程式碼來處理 PrintPage 事件,您可以指定要列印的內容,以及如何列印它。 下列步驟示範如何建立列印工作:

  1. PrintDocument 元件新增至表單。

  2. 撰寫程式碼來處理 PrintPage 事件。

    您必須撰寫自己的列印邏輯。 此外,您必須指定要列印的材料。

    做為列印材質,在下列程式碼範例中,會在事件處理常式中 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));
    

您也可以撰寫 和 EndPrint 事件的程式碼 BeginPrint 。 它有助於包含整數,代表每頁列印時要列印的頁數總數。

注意

您可以將元件新增 PrintDialog 至表單,為您的使用者提供全新且有效率的使用者介面(UI)。 Document設定元件的 屬性 PrintDialog 可讓您設定與您在表單上使用之列印檔案相關的屬性。

如需 Windows Forms 列印工作的詳細資訊,包括如何以程式設計方式建立列印工作,請參閱 PrintPageEventArgs

如何完成列印工作

通常,涉及列印的文字處理器和其他應用程式會提供選項,向使用者顯示列印工作已完成的訊息。 您可以藉由處理 EndPrint 元件的 事件 PrintDocument ,在 Windows Forms 中提供這項功能。

下列程式需要您已建立具有元件之 Windows 型應用程式 PrintDocument 。 以下提供的程式是從 Windows 應用程式啟用列印的標準方式。 如需使用 PrintDocument 元件從 Windows Forms 列印的詳細資訊,請參閱 如何建立列印工作

  1. DocumentName設定元件的 屬性 PrintDocument

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. 撰寫程式碼來處理 EndPrint 事件。

    在下列程式碼範例中,會顯示訊息方塊,指出檔已完成列印。

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