在VB.net中禁用横向打印

时间:2014-10-31 03:04:55

标签: vb.net printing

我有一个Windows窗体,当单击一个按钮时,会打印出两个(或更多)页面。为简单起见,我假设我有两个要打印的文档:PrintDocumentA和PrintDocumentB。 PrintDocumentA将以横向模式打印,而PrintDocumentB将以纵向模式打印。它们都共享相同的PrintDialog - 对于设计问题,它必须是这样的。

我用来打印它们进行打印的代码如下:

If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        PrintDocumentA.PrinterSettings = PrintDialog1.PrinterSettings
        PrintDocumentA.DefaultPageSettings.Landscape = True
        PrintDocumentA.Print()

        PrintDocumentB.PrinterSettings = PrintDialog1.PrinterSettings
        PrintDocumentB.DefaultPageSettings.Landscape = False
        PrintDocumentB.Print()
End If

但奇怪的是,即使我已经禁用它,PrintDocumentB仍然出现在风景中。

当然,我可以将PrintDocumentB放在代码中的PrintDocumentA之前,如下所示:

If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        PrintDocumentB.PrinterSettings = PrintDialog1.PrinterSettings
        PrintDocumentB.DefaultPageSettings.Landscape = False
        PrintDocumentB.Print()

        PrintDocumentA.PrinterSettings = PrintDialog1.PrinterSettings
        PrintDocumentA.DefaultPageSettings.Landscape = True
        PrintDocumentA.Print()
End If

这样可行 - 第一次打印输出。但是当再次点击相同的按钮时,现在B仍然以横向模式出现。我的猜测是以某种方式在全球范围内使用Landscape = True值,并且B也会使用它。我必须退出该特定的Windows窗体并再次打开它以使打印输出以正确的方向出现。

如何解决此问题?

--- --- EDIT

为了更加清晰,这是我在上述代码段之前获得的唯一代码:

Dim PageSetup As New PageSettings
    With PageSetup
        .Margins.Left = 50
        .Margins.Right = 50
        .Margins.Top = 100
        .Margins.Bottom = 75
        .Landscape = False
End With

0 个答案:

没有答案