对于HasMorePages,从字面上理解就是多页打印,也就是实现C#打印分页。在很多时候,由于参数设定错误,很容易出现new PointF(10.0, 30.0)部分报错的现象。这里需要谨慎对待。
HasMorePages的作用很容易产生误解,但也很好理解:当PrintPage函数执行完后,如果HasMorePages==true,则重新执行一遍PrintPage这个函数。只要明白了这一点,打印分页就很简单了。
在打印时,可以把打印位置保存下来,以便于第二次执行PrintPage时知道从哪开始打印。例如,下面这段程序用来打印一个DataTable中有所有数据,每页打印一条:
C#打印分页代码
- class Print
- {
- public partial class NoticePrinter : Form
- {
- PrintDialog _printDialog;
- PrintDocument _printDocument;
- DataTable _table;
- int _curRow;
- //在执行这个函数之前,先要把_curRow初始化为0;
- //当HasMorePages==true时,这个函数会重复执行,直到HasMorePages==fasle为止;
- void _printDocument_PrintPage(object sender, PrintPageEventArgs e)
- {
- DataRow row;
- string name;
- string sex;
- row = _table.Rows[_curRow];
- name = row["xm"].ToString().Trim();
- sex = row["xb"].ToString().Trim();
- Font font = new Font("宋休", 12);
- e.Graphics.DrawString(name, font, Brushes.Black, new PointF(10.0, 10.0));
- e.Graphics.DrawString(sex, font, Brushes.Black, new PointF(10.0, 30.0));
- _curRow++;
- if (_curPage == _table.Rows.Count)
- {
- e.HasMorePages = false;
- }
- else
- {
- e.HasMorePages = true;
- }
- }
- }
- }
【编辑推荐】