C#打印分页中的HasMorePages用法

开发 后端
C#打印分页中的HasMorePages用法,网上关于打印分页的文章已经很多了,但大部分都没讲清楚HasMorePages这个属性的作用到底是什么。本文借着HasMorePages的用法,来说明C#打印分页的具体实现。

对于HasMorePages,从字面上理解就是多页打印,也就是实现C#打印分页。在很多时候,由于参数设定错误,很容易出现new PointF(10.0, 30.0)部分报错的现象。这里需要谨慎对待。

HasMorePages的作用很容易产生误解,但也很好理解:当PrintPage函数执行完后,如果HasMorePages==true,则重新执行一遍PrintPage这个函数。只要明白了这一点,打印分页就很简单了。

在打印时,可以把打印位置保存下来,以便于第二次执行PrintPage时知道从哪开始打印。例如,下面这段程序用来打印一个DataTable中有所有数据,每页打印一条:

C#打印分页代码

  1. class Print  
  2. {  
  3.     public partial class NoticePrinter : Form  
  4.     {  
  5.         PrintDialog _printDialog;  
  6.         PrintDocument _printDocument;  
  7.         DataTable _table;  
  8.         int _curRow;  
  9.    
  10.         //在执行这个函数之前,先要把_curRow初始化为0;  
  11.         //当HasMorePages==true时,这个函数会重复执行,直到HasMorePages==fasle为止;  
  12.         void _printDocument_PrintPage(object sender, PrintPageEventArgs e)  
  13.         {  
  14.             DataRow row;  
  15.             string name;  
  16.             string sex;  
  17.    
  18.             row = _table.Rows[_curRow];  
  19.             name = row["xm"].ToString().Trim();  
  20.             sex = row["xb"].ToString().Trim();  
  21.    
  22.             Font font = new Font("宋休", 12);  
  23.    
  24.             e.Graphics.DrawString(name, font, Brushes.Black, new PointF(10.0, 10.0));  
  25.             e.Graphics.DrawString(sex, font, Brushes.Black, new PointF(10.0, 30.0));  
  26.    
  27.             _curRow++;  
  28.             if (_curPage == _table.Rows.Count)  
  29.             {  
  30.                 e.HasMorePages = false;  
  31.             }  
  32.             else 
  33.             {  
  34.                 e.HasMorePages = true;  
  35.             }  
  36.         }  
  37.     }  

【编辑推荐】

  1. C#打印设置实现源码详解
  2. C#打印控件的使用实例浅析
  3. C#打印条码操作的实例浅析
  4. C#打印原理解析及实例操作
  5. C#及.NET FrameWork的概念浅析
责任编辑:彭凡 来源: elmerzhang.com
相关推荐

2009-08-26 09:54:45

C#打印预览C#打印

2011-04-25 14:42:10

C#lock

2011-07-06 10:47:52

C#using

2009-08-27 15:22:27

C#中的GET与SET

2024-03-19 14:18:48

C#后端编程

2011-05-23 13:27:53

2011-05-20 16:07:29

C#

2009-08-27 16:00:59

C#中using用法

2009-08-21 09:30:05

is和as操作符

2009-08-21 15:27:11

C# DataGrid

2013-06-05 10:11:20

索引器C#

2009-09-07 16:13:56

C# MessageB

2009-08-20 17:17:02

C#哈希表

2009-07-30 15:24:13

C#析构函数C#构造函数

2009-08-26 14:31:08

C#打印文件

2009-08-26 13:41:58

C#打印源码

2014-04-15 13:01:58

FinallyC#

2009-08-27 15:53:30

C#中using wo

2009-08-26 14:01:33

C# using用法

2009-08-26 18:13:55

C#多线程lock
点赞
收藏

51CTO技术栈公众号