- C#打印和C#打印預覽的實現的三大部分:頁面設置、打印預覽、打印具體用到的類和屬性事件都是什麼內容呢?那麼本文就向你介紹C#打印和C#打印預覽的實現具體事宜。
我們談到C#打印和C#打印預覽的實現其中主要就是包括:頁面設置、打印預覽、打印三大部分。打印的原理是:生成mdi文件,系統碰到mdi的時候會自動以打印的方式處理。所以,不管用什麼模板,什麼方式;能在PrintPage事件處理中,生成一張要打印內容的圖片就OK了!主要的支持類都包括在命名空間System.Drawing.Printing中,在程序集System.Drawing.dll中實現。C#打印和C#打印預覽的實現主要通過PrintDocument類來完成,另外還包括幾個輔助類:PrintDialog(打印對話框)、PrintPreviewDialog(打印預覽對話框)、PageSetupDialog。
PrintDocument類是實現打印和打印預覽的中心類,實際的打印操作是通過這個類來完成的。 使用這個類進行打印的操作過程:
1)創建類實例 PrintDocument printDt = new PrintDocument();
2)設置類實例的屬性
3)爲該類的打印事件添加事件處理函數
4)調用該類的Print函數進行打印。
打印:printDt.Print();
共有三個與C#打印和C#打印預覽的實現有關的屬性:
◆DefaultPageSettings:保存了打印文檔的默認頁面設置,如大小、打印方向,它是一個PageSettings類型的變量。
◆DocumentName:用於設置PrintDocument類實例的名字。是一個string類型的變量。
◆PrinterSettings:包含了打印機的設置信息,可以通過“打印”通用對話框對其進行設置。
在執行打印操作之前,應該對這3個屬性進行正確的設置。 PageSettings類和PrinterSettings類 與 PrintDocument類的屬性設置相關的類。
PageSettings類指定單個打印頁面的設置。
PrinterSettings類包含打印機的設置信息。 這兩個類,用戶可以對打印機和打印頁面進行充分的控制。
C#打印和C#打印預覽的實現之處理打印事件PrintDocument類提供了4個事件用來處理打印操作。
◆BeginPrint事件
這個事件在調用Print方法之後,並且在打印第1個頁面之前被觸發。可以在這個事件中設置應用於所有頁面的打印機屬性和頁面屬性,以及使用的字體等參數。
事件代理爲PrintEventHandler,事件參數類型爲PrintEvnetArgs。在PrintEvnetArgs中包含一個Cancel屬性,可以通過這個屬性設置爲True來禁用打印操作。
- This.printDt.BeginPrint +=
- new PrintEventHandler(this.BeginPrinting);
- Private void BeginPrinting(object sender, PrintEvnetArgs e)
- {//針對開始打印事件進行相應的處理
- }
◆EndPrint事件
這個事件在打印完最後一個頁面時被觸發。可以在這個事件中完成一些資源清理工作。事件代理爲PrintEventHandler,事件參數類型爲PrintEvnetArgs。
◆PrintPage事件
這個事件在開始打印每一頁時被觸發,每頁的打印都是在這個事件中完成的。用戶必須爲這個事件提供處理函數,以完成實際的打印操作。
事件代理類型爲 PrintPageEvnetHandler,事件參數的類型爲PrintPageEventArgs。
- printDt.PrintPage +=
- new PrintPageEvnetHandler(this.PrintEveryPage);
- private void PrintEveryPage(object sender, PrintPageEventArgs)
- {
- Graphics gh = e.Graphics;//獲取繪圖對象
- //進行具體的繪畫操作
- //如 gh.DrawingString(..);
- ..
- If (仍有頁面未打印)
- e.HasMorePages = true;
- else
- e.HasMorePages = false;
- }
◆QueryPageSettings事件
這個事件在每個PrintPage事件之前被觸發,可以使用這個事件來設置打印每一個頁面的頁面設置。
事件代理類型爲 QueryPageSettingsEventHandler,事件參數的類型爲QueryPageSettingsEventArgs。事件參數中包含一個PageSettings屬性。
- printDt.QueryPageSettings +=
- new QueryPageSettingsEventHandler(this.SetEveryPage);
- private void SetEveryPage(object sneder, QueryPageSettingsEventArgs e)
- {
- //根據不同的頁面來設置e.PageSettings屬性
- …
- }
- PrintDialog對話框 爲了獲取打印機的設置信息,.Net框架未用戶提供了PrintDialog類。
- PrintDialog printDlg = new PrintDialog();
在顯示“打印”對話框之前,還需要設置它的屬性。
其中最重要的一個屬性就是Document屬性,類型爲PrintDocument.,在對話框中所做的任何設置都將保存在這個屬性中。
PrinterSettings屬性也用來保存用戶在對話框中所做的設置。
在顯示“打印”對話框之前,必須設置Document和PrinterSettings屬性中的一個。
對話框中顯示“打印到文件”按鈕 AllowPrintToFile屬性
顯示選擇頁面範圍的控件 AllowSelection屬性
是否顯示幫助按鈕ShowHelp屬性
- //打印預覽
- //PrintPreviewDialog ppd = new PrintPreviewDialog();
- PrintDocument pd = new PrintDocument();
- //設置邊距
- Margins margin = new Margins(20, 20, 20, 20);
- pd.DefaultPageSettings.Margins = margin;
- ////紙張設置默認
- //PaperSize pageSize = new PaperSize("First custom size", 800, 600);
- //pd.DefaultPageSettings.PaperSize = pageSize;
- //打印事件設置
- pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
C#打印和C#打印預覽的實現的基本內容就向你介紹到這裏,希望對你瞭解和學習C#打印和C#打印預覽的實現方面的編程有所幫助。