printa、printb、およびprintcの3つの印刷方法があります(それぞれ印刷します)。 3つのフォームはすべて複数のページにまたがって印刷する必要があります。 3ページにわたって印刷するにはどうすればよいですか?複数のページにまたがるフォームを印刷する
イベントハンドラを使用してcurrentpageとe.hasmorepagesを使用する必要があることはわかっていますが、使用方法はわかりません。
printa、printb、およびprintcの3つの印刷方法があります(それぞれ印刷します)。 3つのフォームはすべて複数のページにまたがって印刷する必要があります。 3ページにわたって印刷するにはどうすればよいですか?複数のページにまたがるフォームを印刷する
イベントハンドラを使用してcurrentpageとe.hasmorepagesを使用する必要があることはわかっていますが、使用方法はわかりません。
ページ番号を確認してください。 BeginPrintイベントで0に設定し、PrintPageが呼び出されるたびにインクリメントします。このように:
int pageNumber;
private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
pageNumber = 0;
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
++pageNumber;
e.HasMorePages = true;
switch (pageNumber) {
case 1: printa(e); break;
case 2: printb(e); break;
case 3: printc(e); e.HasMorePages = false; break;
}
}
ええ、それはかなり不明瞭です。ここでは、printing Reporting Servicesのレポート(以下のコードのMetaFileイメージ配列)でどのようにしたのですか。
public void Print()
{
if (emfImage == null || emfImage.Count <= 0)
{
throw new ArgumentException("An image is required to print.");
}
printer = printer.Trim();
if (string.IsNullOrEmpty(printer))
{
throw new ArgumentException("A printer is required.");
}
printingPage = 0;
PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = printer;
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.Print();
}
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
Metafile page = emfImage[printingPage];
e.Graphics.DrawImage(page, 0, 0, page.Width, page.Height);
e.HasMorePages = ++printingPage < emfImage.Count;
}
この作品。ありがとうございます – laila