3
雖然在網上有一些教程,但我仍然爲什麼不能正確打印多個頁面而失去意義。我究竟做錯了什麼?如何從WinForms打印多個頁面?
public static void printTest()
{
PrintDialog printDialog1 = new PrintDialog();
PrintDocument printDocument1 = new PrintDocument();
printDialog1.Document = printDocument1;
printDocument1.PrintPage +=
new PrintPageEventHandler(printDocument1_PrintPage);
DialogResult result = printDialog1.ShowDialog();
if (result == DialogResult.OK)
{
printDocument1.Print();
}
}
static void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics graphic = e.Graphics;
SolidBrush brush = new SolidBrush(Color.Black);
Font font = new Font("Courier New", 12);
e.PageSettings.PaperSize = new PaperSize("A4", 850, 1100);
float pageWidth = e.PageSettings.PrintableArea.Width;
float pageHeight = e.PageSettings.PrintableArea.Height;
float fontHeight = font.GetHeight();
int startX = 40;
int startY = 30;
int offsetY = 40;
for (int i = 0; i < 100; i++)
{
graphic.DrawString("Line: " + i, font, brush, startX, startY + offsetY);
offsetY += (int)fontHeight;
if (offsetY >= pageHeight)
{
e.HasMorePages = true;
offsetY = 0;
}
else {
e.HasMorePages = false;
}
}
}
你可以找到這個代碼的打印結果這裏的一個例子:Printed Document
是的,這是有效的。 一個問題:每當HasMorePages觸發標誌時,整個函數PrintPage將從開始再次運行? – SubjectX 2012-02-18 15:28:06
e.HasMorePages在函數返回後進行評估(不是在設置時)。如果它是真的,它再次調用該函數。如果它是假的,它不會停止打印。 – thoean 2012-02-18 15:56:58
我現在已經擴展了我的程序,但我又被卡住了,可能是因爲同樣的原因。我應該問這裏還是開新的問題? – SubjectX 2012-02-19 13:24:50