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

タイトル Re^2: 印刷で用紙の横向きと縦向きをきりかえる
投稿日: 2008/03/06(Thu) 13:47
投稿者ひでと
ありがとうございます。
>
> ページごとに切り替えて表示したいのでしょうか?
> それとも、全ページまとめて、縦/横を切り替えたいのでしょうか?
はい ページ毎に切り替えて表示をしたいと考えています。

>
> Public Class Form1
>    Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
>     Handles Button1.Click
>       PrintPreviewDialog1.ShowDialog()
>    End Sub
>
>    Private page As Integer = 1
>    Sub PrintDocument1_PrintPage(ByVal sender As Object, _
>     ByVal e As Printing.PrintPageEventArgs) _
>     Handles PrintDocument1.PrintPage
>       e.Graphics.DrawRectangle(Pens.Blue, 30, 30, 500, 500)
>       Using F As New Font("MS UI Gothic", 40)
>          e.Graphics.DrawString(page.ToString("0ページ"), F, Brushes.Red, 100, 100)
>       End Using
>       If page < 10 Then
>          e.HasMorePages = True
>          page += 1
>       Else
>          e.HasMorePages = False
>          page = 0
>       End If
>    End Sub
>
>    Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, _
>     ByVal e As Printing.QueryPageSettingsEventArgs) _
>     Handles PrintDocument1.QueryPageSettings
>       With e.PageSettings
>          If page <= 3 Then
>             .PaperSize = New Printing.PaperSize("A4", 1169, 827)
>          ElseIf page <= 6 Then
>             .PaperSize = New Printing.PaperSize("B5", 1012, 717)
>          Else
>             .PaperSize = New Printing.PaperSize("A5", 827, 585)
>          End If
>          .Landscape = (page Mod 2 = 0)
>       End With
>    End Sub
> End Class
QueryPageSettingsイベントを操作する感じなのですね。
試してみましたが、うまく動くのを確認しました。ありがとうございました。

ただ NET Framework クラス ライブラリ の解説で
「PageSettings クラスを使用して、ページの印刷方法を変更する設定を指定します。通常、
PrintDocument.DefaultPageSettings プロパティを使用して、印刷するすべてのページに既定の設定を指定します。ページごとに設定を指定するには、PrintDocument.PrintPage イベントまたは PrintDocument.QueryPageSettings イベントを処理し、それぞれ PrintPageEventArgs または QueryPageSettingsEventArgs に含まれる PageSettings 引数を変更します。」
とありましたので PrintDocument.PrintPage イベントでPrintPageEventArgs
を操作すればいいのかと考えたのですが(花ちゃん様への返信にコード記載)、
うまくいきませんでした。 どのあたりがいけないのでしょうか?

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

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