我一直在阅读大量关于PrintPreviewDialog,PrintPreviewControl和PrintDocument的文档。一切都说我必须将 Portrait/Lanscape 位放入 PrintDocument QueryPageSettings 事件中,然后 PrintPreviewDialog 将从 PrintDocument 获取设置。
我从:
Private Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
Select Case mOrientation
Case ePrinterOrientation.Landscape
PrintDocument1.DefaultPageSettings.Landscape = True
Case ePrinterOrientation.Portrait
PrintDocument1.DefaultPageSettings.Landscape = False
End Select
End Sub
这是我当前的代码
Private Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
Select Case mOrientation
Case ePrinterOrientation.Landscape
Dim ps As New PaperSize("A4Landscape", 1169, 827)
ps.PaperName = PaperKind.A4
PrintDocument1.DefaultPageSettings.PaperSize = ps
PrintDocument1.DefaultPageSettings.Landscape = True
Case ePrinterOrientation.Portrait
Dim ps As New PaperSize("A4Portrait", 827, 1169)
ps.PaperName = PaperKind.A4
PrintDocument1.DefaultPageSettings.PaperSize = ps
PrintDocument1.DefaultPageSettings.Landscape = False
End Select
End Sub
我还尝试将此代码放入PrintDocument1_BeginPrint事件中,这确实更改了 PrintPreview 的"窗口",但 PrintDocument 的内容仍然保持纵向(使用的"视图"的宽度保持不变)。
纵向模式跨越10 页的 2 列,横向模式应在 1 页上包含所有列,但事实并非如此,"可打印区域"边距实际上似乎完全相同,即使数字更改为正确的值如果我逐步完成调试。
我真的对这个感到困惑,这个 3 路依赖,它应该比这更简单。
编辑:
进一步解决这一问题。如果我打印文档,方向设置为横向,但打印边距(文档)仍然打印(溢出),就好像边距是纵向一样。
我真的需要解决这个问题。这是不可接受的。
而不是
PrintDocument1.DefaultPageSettings.Landscape = True
用
e.PageSettings.Landscape = True
您尝试做的是在PrintDoc1_QueryPageSettings内更改事件的值:
System.Drawing.Printing.QueryPageSettingsEventArgs
PaperSize("A4Landscape", 1169, 827)
应该是
PaperSize("A4Landscape", 827, 1169)
肖像也是如此。