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

タイトル 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 に対する変更は、
現在のページにだけ影響を与えます。
ドキュメントの既定のページ設定には影響を与えません。」という説明に矛盾
するような気がするのですが?
テストの仕方がいけないのかも知れないのですが、どうにも理解できません。
かさねて、ご指導お願いします。

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

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