C#打印分頁中的HasMorePages用法
作者:Elmer
C#打印分頁中的HasMorePages用法,網上關于打印分頁的文章已經很多了,但大部分都沒講清楚HasMorePages這個屬性的作用到底是什么。本文借著HasMorePages的用法,來說明C#打印分頁的具體實現。
對于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;
- }
- }
- }
- }
【編輯推薦】
責任編輯:彭凡
來源:
elmerzhang.com