C# printdocument打印分页处理

  • Post author:
  • Post category:其他


重点在PrintPage事件里,有一个HasMorePages属性,这个属性为true他就会新开一页,同时再执行一遍PrintPage绑定的自定义事件,所以它里面相当于一个递归,需要你在合适的时候return这个方法,最后再把HasMorePages置为false,它就不会再循环了;

绑定事件:

private void docToPrint_PrintPage(object o, System.Drawing.Printing.PrintPageEventArgs e)
{
		Bitmap item = ownBitmap[m_CurrentPage];
		e.HasMorePages = true;
		Rectangle rectangle = new Rectangle(0, 0, item.Width, item.Height);
		e.Graphics.DrawImage(item, rectangle);
		m_CurrentPage++;
		if(m_CurrentPage < ownBitmap.Count)
		 	return;
		e.HasMorePages = false;
  }

这个m_CurrentPage是全局变量,这样就每次打印的都是下一页的内容;ownBitmap是一个Bitmap的List,我在外面已经分好页了,只需要挨个打印出来就可以了;

顺便记一下绑定的方法:

private System.Drawing.Printing.PrintDocument docToPrint = new System.Drawing.Printing.PrintDocument();
this.docToPrint.PrintPage += new PrintPageEventHandler(docToPrint_PrintPage);



版权声明:本文为weixin_37778355原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。