1. 程式人生 > >C# 多頁列印簡單實現

C# 多頁列印簡單實現

必要的類:

using System.Drawing.Printing;

我的列印程式碼放在一個Button裡:

private void button1_Click(object sender, EventArgs e)
        {                
            PrintDocument pdDocument = new PrintDocument();            
            pdDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);   
            //pdDocument.DefaultPageSettings.Landscape = true;          //此處更改頁面為橫向列印 
            pdDocument.Print();
        }

private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
        {             
            e.HasMorePages = true;//此處開啟多頁列印屬性

            il++;            //il是一個計數器,即頁數
               Bitmap bmp = new Bitmap(this.Width, this.Height);//生成一個BMP物件
                this.DrawToBitmap(bmp, new Rectangle(Point.Empty, this.Size));

//將當前介面轉成BMP圖片
                Image PrintImage = (Image)bmp.Clone();                //將BMP轉換成Image物件
                e.Graphics.DrawImage(PrintImage, 0, 0);//在左上角0,0的位置列印影象
            if(il>9)//共列印10張
            e.HasMorePages = false;//關掉多頁列印屬性
        }

多頁列印必須把HasMorePages 設為true,達到需要的頁數後關掉此屬性。否則無窮新增新頁面!

經我測試發現,當HasMorePages 設為true後,PrintDocument_PrintPage重複自我執行,直到HasMorePages 設為false。

那麼更新每一頁頁面就成了紅色程式碼部分的任務。

在PrintDocument_PrintPage函式內部,多次執行e.Graphics.DrawImage(PrintImage, 0, 0);是沒有任何效果的,最多隻能重新整理當前頁,不能產生新頁。