| ■No61111 (五右衛門 さん) に返信
> PrintDocumentのPrintPageイベントで最大ページ数は分かるのですが、
> PrintPreviewControlのプロパティなどにこの情報があればいいなと思いまして。
取得方法が確立しているのであれば、PrintPreviewControl を継承して、
最大ページプロパティを追加してしまうというのは如何でしょうか。
> 自作の印刷プレビュー画面では、「次頁」「前頁」またはスピンボタンで表示ページを指定しようと思うのですが、
> 最大ページ数などはどのように取得すればいいのでしょうか?
StartPage に Integer.MaxValue を渡すというのはどうでしょうか。
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim curPage As Integer = PrintPreviewControl1.StartPage
PrintPreviewControl1.StartPage = Integer.MaxValue
Dim maxPage As Integer = PrintPreviewControl1.StartPage
PrintPreviewControl1.StartPage = curPage
MsgBox(maxPage)
End Sub
あるいは PreviewPrintController の GetPreviewPageInfo が返す配列の数から
取得できないかな…と思いましたが、こちらは良い手法が思いつきませんでした。
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Dim defaultController As System.Drawing.Printing.PrintController
defaultController = Me.PrintPreviewControl1.Document.PrintController
Dim sampleController As New Sample()
Me.PrintPreviewControl1.Document.PrintController = sampleController
Me.PrintPreviewControl1.Document.Print()
Dim maxPage As Integer = sampleController.GetCount()
Me.PrintPreviewControl1.Document.PrintController = defaultController
MsgBox(maxPage)
End Sub
Private Class Sample
Inherits System.Drawing.Printing.PreviewPrintController
Public Function GetCount() As Integer
Dim p() As System.Drawing.Printing.PreviewPageInfo = MyBase.GetPreviewPageInfo()
Return If(p Is Nothing, -1, p.Length)
End Function
End Class |