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);是没有任何效果的,最多只能刷新当前页,不能产生新页。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值