ここから本文です

回答受付終了まであとわずか 回答を投稿すると知恵コイン15枚が追加されます

VBの 「PrintPreviewDialog」について教えてください。 画像を選択し出力ボタン...

canacana315さん

2017/10/1212:01:39

VBの 「PrintPreviewDialog」について教えてください。

画像を選択し出力ボタンをクリックすると、印刷プレビューが表示され印刷が行えるようにしたいのですが、うまくいきません。

印刷プレビューを表示するところまではできたのですが、印刷をかけると必ず1ページ目しか印刷されません。
プレビューではちゃんと全てのページが表示されています。

どなたかお分かりになる方よろしくお願いします。



拙いコードで申し訳ありませんが、以下に内容を記載させていただきます。

'-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
'出力するボタンをクリックしたときの処理
Private Sub SyuturyokuB_Click(sender As Object, e As EventArgs) Handles SyuturyokuB.Click

'===================================
Dim PrintD As New System.Drawing.Printing.PrintDocument
Dim PPrintD As New PrintPreviewDialog
'===================================

≪ ここでページのサイズを指定する処理 ≫

'PrintPageイベントハンドラの追加
AddHandler PrintD.PrintPage, AddressOf PrintD_PrintPage
'プレビューするPrintDocumentを設定
PPrintD.Document = PrintD
'印刷プレビューダイアログを表示する
PPrintD.ShowDialog()

End Sub

'-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
'画像を出力する処理
Private Sub PrintD_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)

≪ ここでページを作成する処理 ≫

'表示されているページ数になるまでページ番号と写真番号を増やして処理を繰り返す
If ≪データの最後か≫ Then
'次のページがない場合はFalseを指定
e.HasMorePages = False
Else
'次のページがある場合はTrueを指定
e.HasMorePages = True
End If
End Sub

補足自己解決できましたorz
ものすごくくだらないミスだったのですが、備忘録のために詳細を記述させていただきます。

≪データの最後か≫を
「if PageNo > 印刷したいページ数 Then]としていました。

例えば3ページ分印刷したい場合、
プレビューを表示するには
「PPrintD.ShowDialog()」

1ページ目の「PrintD_PrintPage」
↓(HasMorePages=Trueなので)
2ページ目の「PrintD_PrintPage」
↓(HasMorePages=Trueなので)
3ページ目の「PrintD_PrintPage」
↓(HasMorePages=Falseなので)
印刷プレビューが表示される

印刷プレビューで印刷を実行した場合
「PPrintD.ShowDialog()」

1ページ目の「PrintD_PrintPage」
↓(HasMorePages=Trueなので)
2ページ目の「PrintD_PrintPage」
↓(HasMorePages=Trueなので)
3ページ目の「PrintD_PrintPage」
↓(HasMorePages=Falseなので)
印刷が実行される

という風に、プレビューを表示するときと印刷を実行するときに同じ道筋(?)をたどるのですが、
プレビュー表示前に「PageNo=0」をしただけだったので、印刷実行時はPageNo=4から始まっており、
1ページ目を印刷しただけでHasMorePages=Falseになっていたということのようです。

お目汚し失礼いたしました<m(__)m>

閲覧数:
37
回答数:
0
お礼:
50枚

違反報告

回答投稿

全角1文字以上で回答を入力してください。

※質問が「投票受付中」「解決済み」になると、回答を取り消すことはできません。
※一度に投稿できるURLは3つ以内です。(プレミアム会員・知恵袋アプリは除く)

エラーが発生しました。お手数ですが、時間をおいて再度お試しください。

あと全角4000文字

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。