C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 74 を表示中)
■43088 / )  印刷で複数ページ印刷したとき同じページが印刷される。
□投稿者/ RT (189回)-(2009/10/28(Wed) 20:26:16)

分類:[C#] 

2009/10/28(Wed) 20:57:06 編集(投稿者)

こんにちは。RTです。
たびたびお世話になります。
C#でプログラミングを行っております。

質問なのですが、印刷で複数ページ印刷したとき同じページ(1ページ)が印刷されます。
例えば、3ページ印刷したら、3ページとも1ページが表示されます。

コードは次の通りです。

       //PrintPageイベントハンドラの追加
printDocument_Source.PrintPage +=
new System.Drawing.Printing.PrintPageEventHandler(printDocument_Source_PrintPage);
//PrintDialogクラスの作成
PrintDialog cPrintDialog = new PrintDialog();
//PrintDocumentを指定
cPrintDialog.Document = printDocument_Source;
//ページ指定できるようにする
cPrintDialog.AllowSomePages = true;
//ページ指定の最小値と最大値を指定する
cPrintDialog.PrinterSettings.MinimumPage = 1;
cPrintDialog.PrinterSettings.MaximumPage = 200;
//印刷開始と終了ページを指定する
cPrintDialog.PrinterSettings.FromPage = cPrintDialog.PrinterSettings.MinimumPage;
cPrintDialog.PrinterSettings.ToPage = cPrintDialog.PrinterSettings.MinimumPage;

//印刷の選択ダイアログを表示する
if (cPrintDialog.ShowDialog() == DialogResult.OK)
{
//OKがクリックされた時は印刷する
printDocument_Source.Print();
}

private void printDocument_Source_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//ページ範囲が指定されており、始めのページのときは、
//印刷開始ページまで飛ばす
if (e.PageSettings.PrinterSettings.PrintRange ==
System.Drawing.Printing.PrintRange.SomePages &&
currentPage == 1)
{
currentPage = e.PageSettings.PrinterSettings.FromPage;
}

e.Graphics.PageUnit = GraphicsUnit.Millimeter;

//印刷ダイアログで横が選択された時
if (printDocument_Source.DefaultPageSettings.Landscape == true)
{
//currentPageで指定されたページを描画する
Font cFont = new Font("Ariel", 12);
e.Graphics.DrawString(RichTxt_Main.Text,
cFont, Brushes.Black, new RectangleF(0, 0, 290, 200));
cFont.Dispose();
}
else
{
//currentPageで指定されたページを描画する
Font cFont = new Font("Ariel", 12);
e.Graphics.DrawString(RichTxt_Main.Text,
cFont, Brushes.Black, new RectangleF(0, 0,200, 350));
cFont.Dispose();
}

//次のページがあるか調べる
if (currentPage >= 10 ||
(e.PageSettings.PrinterSettings.PrintRange ==
System.Drawing.Printing.PrintRange.SomePages &&
e.PageSettings.PrinterSettings.ToPage <= currentPage))
{
//次のページがないことを通知する
e.HasMorePages = false;
currentPage =1;
}
else
{
e.HasMorePages = true;
currentPage++;
}
}

どこか、原因があるでしょうか?アドバイスよろしくお願いします。
返信 編集キー/


管理者用

- Child Tree -