タイトル : 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 を操作すればいいのかと考えたのですが(花ちゃん様への返信にコード記載)、 うまくいきませんでした。 どのあたりがいけないのでしょうか? |