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來禁用列印操作。
1. This.printDt.BeginPrint +=
2. new PrintEventHandler(this.BeginPrinting);
3.
4. Private void BeginPrinting(object sender, PrintEvnetArgs e)
5.
6. {//針對開始列印事件進行相應的處理
7.
8. }
◆EndPrint事件
這個事件在列印完最後一個頁面時被觸發。可以在這個事件中完成一些資源清理工作。事件代理為PrintEventHandler,事件參數類型為PrintEvnetArgs。
◆PrintPage事件
這個事件在開始列印每一頁時被觸發,每頁的列印都是在這個事件中完成的。使用者必須為這個事件提供處理函數,以完成實際的列印操作。
事件代理類型為 PrintPageEvnetHandler,事件參數的類型為PrintPageEventArgs。
9. printDt.PrintPage +=
10. new PrintPageEvnetHandler(this.PrintEveryPage);
11.
12. private void PrintEveryPage(object sender, PrintPageEventArgs)
13.
14. {
15.
16. Graphics gh = e.Graphics;//擷取繪圖對象
17.
18. //進行具體的繪畫操作
19.
20. //如 gh.DrawingString(..);
21.
22. ..
23.
24. If (仍有頁面未列印)
25.
26. e.HasMorePages = true;
27.
28. else
29.
30. e.HasMorePages = false;
31.
32. }
◆QueryPageSettings事件
這個事件在每個PrintPage事件之前被觸發,可以使用這個事件來設定列印每一個頁面的版面設定。
事件代理類型為 QueryPageSettingsEventHandler,事件參數的類型為QueryPageSettingsEventArgs。事件參數中包含一個PageSettings屬性。
33. printDt.QueryPageSettings +=
34. new QueryPageSettingsEventHandler(this.SetEveryPage);
35.
36. private void SetEveryPage(object sneder, QueryPageSettingsEventArgs e)
37.
38. {
39. //根據不同的頁面來設定e.PageSettings屬性
40. …
41. }
42.
43. PrintDialog對話方塊 為了擷取印表機的設定資訊,.Net架構未使用者提供了PrintDialog類。
44.
45. PrintDialog printDlg = new PrintDialog();
46.
在顯示“列印”對話方塊之前,還需要設定它的屬性。
其中最重要的一個屬性就是Document屬性,類型為PrintDocument.,在對話方塊中所做的任何設定都將儲存在這個屬性中。
PrinterSettings屬性也用來儲存使用者在對話方塊中所做的設定。
在顯示“列印”對話方塊之前,必須設定Document和PrinterSettings屬性中的一個。
對話方塊中顯示“列印到檔案”按鈕 AllowPrintToFile屬性
顯示選擇頁面範圍的控制項 AllowSelection屬性
是否顯示協助按鈕ShowHelp屬性
47. //預覽列印
48. //PrintPreviewDialog ppd = new PrintPreviewDialog();
49.
50. PrintDocument pd = new PrintDocument();
51.
52. //設定邊距
53.
54. Margins margin = new Margins(20, 20, 20, 20);
55.
56. pd.DefaultPageSettings.Margins = margin;
57.
58. ////紙張設定預設
59. //PaperSize pageSize = new PaperSize("First custom size", 800, 600);
60. //pd.DefaultPageSettings.PaperSize = pageSize;
61. //列印事件設定
62.
63. pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
C#列印和C#預覽列印的實現的基本內容就向你介紹到這裡,希望對你瞭解和學習C#列印和C#預覽列印的實現方面的編程有所協助。
DEMO地址:http://apps.hi.baidu.com/share/detail/23981714
http://www.cnblogs.com/longle/admin/EditPosts.aspx?postid=2242224