PrintDialog 元件概觀 (Windows Forms .NET)
在 Windows Forms 中列印主要包含使用 PrintDocument 元件讓使用者能夠進行列印。 PrintPreviewDialog 控制項、PrintDialog 和 PageSetupDialog 元件可為 Windows 作業系統使用者提供熟悉的圖形化介面。
PrintDialog
元件是預先設定的對話方塊,用來選取印表機、選擇要列印的頁面以及決定 Windows 架構應用程式中的其他列印相關設定。 這是印表機和列印相關設定的簡單解決方案,而不需設定您自己的對話方塊。 您可以讓使用者列印文件中的許多部分:列印全部、列印選取的頁面範圍或列印選取項目。 藉由標準 Windows 對話方塊,建立使用者可立即熟悉基本功能的應用程式。 PrintDialog 元件繼承自 CommonDialog 類別。
一般而言,您會建立 PrintDocument 元件的新執行個體,並使用 PrinterSettings 和 PageSettings 類別設定描述所要列印內容的屬性。 呼叫 Print 方法實際會列印文件。
使用元件
使用 PrintDialog.ShowDialog 方法可在執行階段顯示對話方塊。 此元件具有與單一列印作業 (PrintDocument 類別) 或個別印表機 (PrinterSettings 類別) 設定相關的屬性。 兩者其中之一接著都可由多個印表機共用。
顯示對話方塊方法可協助您將列印對話方塊新增至表單。 PrintDialog 元件會出現在 Visual Studio 中 Windows Forms 設計工具底部的系統匣。
如何在執行階段從 PrintDialog 擷取使用者輸入
您可以在設計階段設定與列印相關的選項。 有時候需要在執行階段變更這些選項,原因很可能是使用者所做的選擇。 您可以使用 PrintDialog 和 PrintDocument 元件擷取使用者輸入以列印文件。 下列步驟示範如何顯示文件的列印對話方塊:
將 PrintDialog 和 PrintDocument 元件新增至您的表單。
將 PrintDialog 的 Document 屬性設定為新增至表單的 PrintDocument。
PrintDialog1.Document = PrintDocument1
printDialog1.Document = printDocument1;
使用 ShowDialog 方法顯示 PrintDialog 元件。
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();
使用者在對話方塊中的列印選擇將會複製到 PrintDocument 元件的 PrinterSettings 屬性。
如何建立列印作業
在 Windows Forms 中列印的基礎是 PrintDocument 元件,更具體地說是 PrintPage 事件。 藉由撰寫程式碼來處理 PrintPage 事件,即可指定要列印的內容以及列印方式。 下列步驟示範如何建立列印作業:
將 PrintDocument 元件新增至您的表單。
撰寫程式碼來處理 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));
可能還需要為 BeginPrint 和 EndPrint 事件撰寫程式碼。 其有助於包含一個整數,該整數代表要列印的總頁數,每列印一頁時該數值就會遞減。
注意
您可以將 PrintDialog 元件新增至表單,以便為您的使用者提供簡潔且有效率的使用者介面 (UI)。 設定 PrintDialog 元件的 Document 屬性,可讓您設定與表單上所使用的列印文件相關的屬性。
如需 Windows Forms 列印作業特性的詳細資訊,包括如何以程式設計方式建立列印作業,請參閱 PrintPageEventArgs。
如何完成列印作業
通常,涉及列印的文字處理器和其他應用程式會提供一個選項,用來向使用者顯示列印作業已完成的訊息。 藉由處理 PrintDocument 元件的 EndPrint 事件,即可在 Windows Forms 中提供這項功能。
下列程序要求您已建立包含 PrintDocument 元件的 Windows 架構應用程式。 以下提供的程序是從 Windows 架構應用程式啟用列印的標準方式。 如需使用 PrintDocument 元件從 Windows Forms 列印的詳細資訊,請參閱如何建立列印作業。
設定 PrintDocument 元件的 DocumentName 屬性。
PrintDocument1.DocumentName = "SamplePrintApp"
printDocument1.DocumentName = "SamplePrintApp";
撰寫程式碼來處理 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.");