|
.NET TIPS 複数ページの印刷を行うには?[C#、VB]デジタルアドバンテージ 一色 政彦2006/01/13 |
![]() |
|
|
|
「TIPS:Windowsアプリケーションで印刷を行うには?」では、Windowsアプリケーションなどで印刷を行う方法を紹介した。そこで、実際の印刷を行うにはPrintDocumentコンポーネント(System.Drawing.Printing名前空間)のPrintPageイベントのイベント・ハンドラ内で印刷処理を実装すればよいと説明したが、その方法では1ページしか印刷されない仕様となっている。それでは複数ページを印刷するにはどうすればよいのか。
複数ページの印刷処理
複数ページを印刷するには、PrintPageイベント・ハンドラの第2パラメータのPrintPageEventArgsオブジェクト(System.Drawing.Printing名前空間)が持つHasMorePagesプロパティを利用する。
HasMorePagesプロパティは、さらに印刷すべきページがあるかどうかをTrue/Falseで指定するためのものだ。つまりこのプロパティにTrueを設定すれば、2ページ目以降が印刷されるようになるわけである(HasMorePagesプロパティはデフォルトではFalseになっているので、指定しないと1ページで印刷が終わってしまう)。
実際にHasMorePagesプロパティにTrueを設定すると、PrintPageイベント・ハンドラの印刷処理が完了した後、再びPrintPageイベント・ハンドラが呼び出される。要するに、この2回目の呼び出しのタイミングで2ページ目を印刷すればよいわけだ。そして、さらに3ページ目を印刷したい場合には、またHasMorePagesプロパティにTrueを設定すればよい。逆に、もうこれ以上印刷したくない場合にはFalseを指定すればよい。
HasMorePagesプロパティの設定を実際に実装したのが、次のサンプル・プログラムである。このサンプル・プログラムでは、全部で2ページを印刷する仕様となっている。
|
||
| 複数ページを印刷するサンプル・プログラム(上:C#、下:VB.NET) |
サンプル・プログラムの内容についてはコード中のコメントを読めばご理解いただけると思うので、詳しい説明は割愛する。なお前掲のTIPSとほぼ同じような実装内容となっている。
複数ページ印刷の実装時には、同じPrintPageイベント・ハンドラが何度も呼び出されることに注意してほしい。このような仕様になっているため、このイベント・ハンドラ内でさらに印刷すべきものが残っているかを常に計算しながらHasMorePagesプロパティを設定しなければならない。
本稿のサンプル・プログラムでは、2ページ分だけ印刷することを初めから想定しているので、クラスのフィールドとしてcurPageNumberというint(Integer)型の変数を用意して、それによっていま何ページ目の印刷を行っているかを管理するようにしている。これにより、2ページ目の印刷後に印刷処理を終了できるように(=HasMorePagesプロパティにFalseを指定するように)なっている。![]()
| カテゴリ:Windowsフォーム 処理対象:印刷 カテゴリ:クラス・ライブラリ 処理対象:印刷 使用ライブラリ:PrintDocumentクラス(System.Drawing.Printing名前空間) 使用ライブラリ:PrintPageEventArgsクラス(System.Drawing.Printing名前空間) 関連TIPS:Windowsアプリケーションで印刷を行うには? |
|
||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


