2

PrintDocument で複数のページを作成し、それらを PrintPreviewControl 内に表示するのに問題があります。1 つのページを簡単に作成することはできますが、複数のページをつなぎ合わせることは困難です。

最終的には、GDI を使用していくつかのページを描画する予定ですが、このようなものを期待どおりに動作させることはできません。

private PrintDocument doc = new PrintDocument();
private string[] printMe = new string[]{ "page1", "page2", "page3" );
private int pageCount = 0;

private void FormLoad(object sender, EventArgs e)
{
 doc.PrintPage += new PrintPageEventHandler(PrintPage);
 PrintPreviewControl.Document = doc;
}

private void doc_BeginPrint(object sender, PrintEventArgs e){ pageCount = 0; }

private void PrintPage(object sender, PrintPageEventArgs e)
{
 Graphics g = e.Graphics;
 g.DrawString(drawMe[pageCount++], "Lucida Console", Brushes.Black, new Point(20,20));

 e.HasMorePages = (pageCount  printMe.Length );
}

3 つの個別のページが作成され、PrintPreview コントロール内に表示されるという考えです。私は何が欠けていますか?

4

2 に答える 2

0

コード スニペットは、e.HasMorePages を割り当てる重要なポイントで正確に破損しています。コードには明らかな問題が 1 つあります。ページ カウンターを 0 にリセットするには、BeginPrint イベント ハンドラーを実装する必要があります。

于 2010-02-04T17:14:11.243 に答える