タイトル : Re^3: 印刷で用紙の横向きと縦向きをきりかえる 投稿日 : 2008/03/06(Thu) 14:15 投稿者 : 魔界の仮面弁士
> はじめに乗せたものを直してふたたび乗せます。 乗せる→載せる? > Private Sub PageSetting1(ByVal sender As Object, ByRef e As System.Drawing.Printing.PrintPageEventArgs) > Private Sub PageSetting2(ByVal sender As Object, ByRef e As System.Drawing.Printing.PrintPageEventArgs) この sender 引数は、何のために設けているのでしょう? また、何故 e は ByRef にしてあるのでしょう? > Dim nFont As Font > nFont = New Font("MS 明朝", 10) Using ステートメントを使いましょう。 生成した Font は、使用後に解放しなければなりませんので。 > PageSetting1(sender, e) 「印刷している最中(PrintPage イベントの中)」で、レイアウト変更を行う事はできません。 もし、印刷中のレイアウト修正が可能だったとしたら、PrintPage 中の e.PageBounds や e.MarginBounds まで、動的に変わる事になってしまいます。 つまりレイアウト変更は、「印刷される直前」に行われなければなりません。 全ページを一括指定したいなら、 PrintDocument1.DefaultPageSettings.Landscape = False PrintPreviewDialog1.ShowDialog() のように、印刷処理の直前に行わなければなりませんし、ページ単位の個別指定ならば 先のサンプルのように、それぞれの PrintPage が発生する直前に呼び出される QueryPageSettings を使う事になるというわけです。 |