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