tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。