Please see my comment to the question. It should obvious that having hard-coded immediate constant true cannot work to finilize printing. When you need more pages, it should be true, and eventually it should become false. I don't know what else needs explanation.
Please see:
PrintPageEventArgs Class (System.Drawing.Printing)[
^],
PrintPageEventArgs.HasMorePages Property (System.Drawing.Printing)[
^].
In your case, the case of multiple pages, the right-part operand of assignement should be calculated on condition:
void myPrintPageHandler(object sender, PrintPageEventArgs ev) {
ev.HasMorePages = !AllPagesArePrinted(ev);
}
—SA