我有一个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