C#打印分頁中的HasMorePages用法
對于HasMorePages,從字面上理解就是多頁打印,也就是實現(xiàn)C#打印分頁。在很多時候,由于參數(shù)設定錯誤,很容易出現(xiàn)new PointF(10.0, 30.0)部分報錯的現(xiàn)象。這里需要謹慎對待。
HasMorePages的作用很容易產生誤解,但也很好理解:當PrintPage函數(shù)執(zhí)行完后,如果HasMorePages==true,則重新執(zhí)行一遍PrintPage這個函數(shù)。只要明白了這一點,打印分頁就很簡單了。
在打印時,可以把打印位置保存下來,以便于第二次執(zhí)行PrintPage時知道從哪開始打印。例如,下面這段程序用來打印一個DataTable中有所有數(shù)據(jù),每頁打印一條:
C#打印分頁代碼
- class Print
- {
- public partial class NoticePrinter : Form
- {
- PrintDialog _printDialog;
- PrintDocument _printDocument;
- DataTable _table;
- int _curRow;
- //在執(zhí)行這個函數(shù)之前,先要把_curRow初始化為0;
- //當HasMorePages==true時,這個函數(shù)會重復執(zhí)行,直到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;
- }
- }
- }
- }
【編輯推薦】