我是一名 PHP 开发人员,正在做一个 C# 项目。 我正忙于一个 C# winform 项目。
打印文档时,我需要添加内容与第一页不同的页面。
明确地说。我需要两个页面,每个页面都有自己的内容。
目前它正在按预期打印 2 页,但两页上的内容完全相同, 这是我目前拥有的示例。
int currentpage = 0;
int numofpages = 2;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
float pageHeight = e.MarginBounds.Height;
Bitmap bmp = Properties.Resources.someImage;
Image newImage = bmp;
e.Graphics.DrawImage(newImage, 20, 20);
e.Graphics.DrawString("More content", new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, 600, 350);
currentpage++;
if (currentpage < numofpages)
{
e.HasMorePages = true;
Bitmap bmp = Properties.Resources.someOtherImage;
Image newImage = bmp;
e.Graphics.DrawImage(newImage, 20, 20);
e.Graphics.DrawString("Other content", new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, 600, 350);
}
else
{
e.HasMorePages = false;
}
}
有没有办法创建带有自己内容的第二个页面?
我当前唯一的选择是创建第二个功能
printDocument2_PrintPage_1
,但它对最终用户来说并不友好。
正如我在评论中所说,看起来您正在尝试在事件处理程序的单个回调期间呈现两个页面的内容。你应该这样做:
int currentpage = 0;
int numofpages = 2;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
currentpage++;
if(currentpage==1)
{
Bitmap bmp = Properties.Resources.someImage;
Image newImage = bmp;
e.Graphics.DrawImage(newImage, 20, 20);
e.Graphics.DrawString("More content", new Font("Verdana", 10,
FontStyle.Bold), Brushes.Black, 600, 350);
}
else if(currentpage == 2)
{
Bitmap bmp = Properties.Resources.someOtherImage;
Image newImage = bmp;
e.Graphics.DrawImage(newImage, 20, 20);
e.Graphics.DrawString("Other content", new Font("Verdana", 10,
FontStyle.Bold), Brushes.Black, 600, 350);
}
e.HasMorePages = currentpage < numofpages;
}