PrintPreviewDialogを利用した場合の印刷完了判断

タグの編集
投稿者 nin  (社会人) 投稿日時 2013/12/23 19:36:51
毎度お世話になっています
PrintPreviewDialogを利用して印刷していますが、印刷されたのか、キャンセルされたのか判断したいのですが、どのようにすればいいでしょうか?
何か戻り値を取得することができるのでしょうか?
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2013/12/23 20:06:00
> 印刷されたのか、キャンセルされたのか

ダイアログがキャンセルされたか否か、という意味であれば、
呼び出しに使った ShowDialog メソッドの戻り値で判断できます。

印刷指示を出した後、それがプリンター側で取り消されたかを
調べたいのだとしたら、それは取得できないと思います。
投稿者 nin  (社会人) 投稿日時 2013/12/24 15:43:09
回答ありがとうございます
 
試しに以下のように記述してみましたが、ダメでした
If PrintPreviewDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                MsgBox("OK")
          Else
               MsgBox("Cancelled")
            End If

PrintPreviewDialog1.ShowDialog() の戻り値ですが、閉じると 2 が帰ってきます
印刷ボタンを押してもまだフォームが閉じないので、戻り値が帰りません
その後、閉じるで、同じ 2 が帰ってきます
ん~~ん です
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2013/12/24 16:07:16
あ。PrintDialog と勘違いしていました…失礼しました。

PrintPreviewDialog なら、こんな感じで処理できると思います。


Private Sub PrintClick(sender As Object, e As EventArgs)
    PrintPreviewDialog1.Tag += 1
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim tool = PrintPreviewDialog1.Controls.OfType(Of ToolStrip)().First()
    Dim item = tool.Items.OfType(Of ToolStripButton)().Where(Function(t) t.Text Like "印刷*").First()
    AddHandler item.Click, AddressOf PrintClick

    PrintPreviewDialog1.Tag = 0
    Me.PrintPreviewDialog1.ShowDialog()
    RemoveHandler item.Click, AddressOf PrintClick

    MsgBox(String.Format("印刷ボタンが押された回数={0}", PrintPreviewDialog1.Tag), MsgBoxStyle.Information)
End Sub
投稿者 nin  (社会人) 投稿日時 2013/12/24 20:45:25
魔界の仮面弁士様

できました! ありがとうございます。
記載頂いたコード、小生では、さっぱり理解不能?ですが、印刷判断できました