2011-07-21 16 views
0

printa、printb、およびprintcの3つの印刷方法があります(それぞれ印刷します)。 3つのフォームはすべて複数のページにまたがって印刷する必要があります。 3ページにわたって印刷するにはどうすればよいですか?複数のページにまたがるフォームを印刷する

イベントハンドラを使用してcurrentpageとe.hasmorepagesを使用する必要があることはわかっていますが、使用方法はわかりません。

答えて

1

ページ番号を確認してください。 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; 
     } 
    } 
+0

この作品。ありがとうございます – laila

0

ええ、それはかなり不明瞭です。ここでは、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; 
} 
関連する問題