DOBON.NET DOBON.NETプログラミング掲示板過去ログ

印刷範囲(FromPage、ToPage)の指定が効きません

環境/言語:[VB.NET(2003),FW1.1]
分類:[.NET]

(印刷範囲(FromPage、ToPage)の指定が効きません)

お世話になります。

PrintDocumentのイベント(PrintPageやら)をコーディングして自前で印
刷する場合なのですが・・・。

印刷ダイアログで設定した印刷範囲が、プロパティ上は有効になりますが
実際にPrintをすると、全ページ分PrintPageを通ってしまいます。
自分でページ番号を変数で管理して、PrintPageやらQueryPageSettingsで
範囲外の印刷をキャンセルすればそのページはキャンセルされるのかな?
と思いやってみたのですが、「e.Cancel」はそういうものではないようで、
エラーになりました。

そもそも、自分でToやFromと比較してページを飛ばす制御を記述するので
しょうか?
印刷ダイアログのほかの機能はダイアログで設定すれば後は勝手にやって
くれるようなので、これだけ自分で行う、とは考えにくいのですが。

自分で行う場合、何を使用すれば各ページのキャンセルになるのでしょうか。

ひょっとして、データそのものを、対象ページ分だけに削って加工してから、
PrintPageを通すなんていう処理をするしかないのでしょうか。
(それでは悲しすぎますが・・・。)


なお、フレームワークは1.1で、VS.NET2003(VB)でWindowsフォームのアプ
リケーションを開発しています。

(ちなみに1.0は印刷ダイアログで設定した部数が有効にならず、必ず1部
しか出ないので最近乗り換えました。DataGridの挙動もおかしかったし。)
■No1977に返信(こど。さんの記事)
> そもそも、自分でToやFromと比較してページを飛ばす制御を記述するので
> しょうか?

前にもこの掲示板で出ましたが、自分で処理する必要がありそうです。

> 自分で行う場合、何を使用すれば各ページのキャンセルになるのでしょうか。

PrintPageイベントハンドラで何もせずに抜ければ印刷されないと思うのですが、どうでしょう?
■No1981に返信(管理人さんの記事)
> > PrintPageイベントハンドラで何もせずに抜ければ印刷されないと思うのですが、どうでしょう?

何かうまくいったっぽいです。
まさか、何もしなければよい、とは。
色々試したのですが、キャンセルをしなければいけないという妙な先入観で、
完全に選択肢から抜けてました。

・・・処理をさぼって、printPage内でレコード進ませたりしてるので、
まぁどちらにしろ整理して作り直さなくてはですが、問題は解決したみたいで、
ありがとうございます。

> 前にもこの掲示板で出ましたが、自分で処理する必要がありそうです。
すみません、一通り過去ログも見たつもりだったんですが、気づきませんでした。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板