|
分類:[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++; } }
どこか、原因があるでしょうか?アドバイスよろしくお願いします。
|