タイトル : Re: PrintPreviewDialogでの印刷ボタン 投稿日 : 2008/02/12(Tue) 16:34 投稿者 : 魔界の仮面弁士
当方では現象を再現できませんでした。(全ページ、期待通りに出力されました) > PrintPreviewDialogで印刷のボタンを押すとページの最後のページだけが > 印刷されます。(表示は複数ページがされています) 通常であれば、そのような結果にはならない筈なので、現段階においては、 ひでとさんが書かれたコード自体に問題がある可能性が高いと予想します。 実際に現象を再現可能な、最小限のソースコードを提示できますでしょうか? 再現可能なコードがあれば、それがコード上のバグなのか、それとも、環境側の問題なのか あるいは .NET Framework の不具合なのかを検証しやすくなります。 なお、当方で検証したコードは下記になります。 Imports System.Drawing.Printing Public Class Form1 Private sample As List(Of String) Private currentPage As Integer Private minPage As Integer Private maxPage As Integer Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load Button1.Text = "プレビュー" Button2.Text = "直接印刷" PrintPreviewDialog1.Document = PrintDocument1 sample = New List(Of String) sample.Add("これは最初のページです。") sample.Add("これは2ページ目です。") sample.Add("これは3ページ目です。") sample.Add("これは4ページ目です。") sample.Add("これは最後のページです。") currentPage = 0 minPage = 1 maxPage = 5 End Sub Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles Button1.Click currentPage = 0 Enabled = False PrintPreviewDialog1.ShowDialog() End Sub Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles Button2.Click currentPage = 0 Enabled = False PrintDocument1.Print() End Sub Sub PrintDocument1_PrintPage(ByVal sender As Object, _ ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage currentPage += 1 Using F As New Font("MS P Gothic", 21), B As New SolidBrush(Color.Blue) Dim index As Integer = currentPage - 1 e.Graphics.DrawString(sample(index), F, B, 0, 0) End Using If currentPage < maxPage Then e.HasMorePages = True Else e.HasMorePages = False currentPage = 0 Enabled = True End If End Sub End Class |