タイトル : Re^4: 自己レスです 投稿日 : 2009/01/13(Tue) 15:58 投稿者 : ひでと
> [F8] で実行して、どこで値が変化するのか調べれば済む事では。 実験します。まず e.PageSettings.Margins にQueryPageSettings内で 初期化をしない場合の処理として(1)をレム文にした場合 Private Sub PrintDocument1_QueryPageSettings _ (ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) _ Handles PrintDocument1.QueryPageSettings Debug.Print(Me.PrintDocument1.DefaultPageSettings.Margins.Left) 'e.PageSettings.Margins をDefaultに戻そうとしてもうまくいかない? (1) 'e.PageSettings.Margins = Me.PrintDocument1.DefaultPageSettings.Margins 省略 End With Debug.Print(Me.PrintDocument1.DefaultPageSettings.Margins.Left) End Sub にて実験します。 1-1 PrintPreviewDialog.Showだけした場合 Me.PrintDocument1.DefaultPageSettings.Margins.Leftの値は全て80で設定値のままです。 1-2 PrintPreviewDialogの印刷ボタンを押した場合 Me.PrintDocument1.DefaultPageSettings.Margins.Leftの値は全て80で設定値のままです。 ただし 実際の印刷はずれています。 この結果からQueryPageSettings内では PrintDocument.DefaultPageSettings.Margins の値は変化していないと考えられます。そこで(1)を実行文に変えて (2) e.PageSettings.Margins = Me.PrintDocument1.DefaultPageSettings.Margins で実験してみます。 2-1 PrintPreviewDialog.Showだけした場合 Me.PrintDocument1.DefaultPageSettings.Margins.Leftの値は全て80で設定値のままです。 2-2 PrintPreviewDialogの印刷ボタンを押した場合 Debug.Printの値は 80,60,60,40,40,20と変化します。 考察 テスト用の処理の中でDefaultPageSettingsに値を設定しているのは Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load With Me.PrintDocument1.DefaultPageSettings.Margins .Left = 80 .Right = 40 .Top = 40 .Bottom = 40 End With End Sub の処理だけです。他の処理ではMe.PrintDocument1.DefaultPageSettings.Margins= などの処理はやっていないはずです。 したがっってQueryPageSettings内のe.PageSettingsの値を変更するとDefaultPageSettings が変わってしまって、(1)の結果と「PageSettings に対する変更は、 現在のページにだけ影響を与えます。 ドキュメントの既定のページ設定には影響を与えません。」という説明に矛盾 するような気がするのですが? テストの仕方がいけないのかも知れないのですが、どうにも理解できません。 かさねて、ご指導お願いします。 |