我一直在阅读大量关于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的内容仍然保留了Portrait(所用“视图”的宽度保持不变)。 / p>
纵向模式跨越2页的10列,横向模式应该包含1页上的所有列,但事实并非如此,“PrintableArea”边距在现实中看起来保持完全相同,即使如果我逐步调试,数字会更改为正确的值。
我真的得到了这个,这种三向依赖,它应该比这简单。
编辑:
进一步解决这个问题。如果我打印文档,方向设置为横向,但打印边距(文档)仍然打印(有溢出),好像边距是纵向。
我真的需要解决这个问题。这是不可接受的。
答案 0 :(得分:0)
而不是
PrintDocument1.DefaultPageSettings.Landscape = True
使用
e.PageSettings.Landscape = True
您要做的是在PrintDoc1_QueryPageSettings中更改事件的值:
System.Drawing.Printing.QueryPageSettingsEventArgs
答案 1 :(得分:0)
PaperSize("A4Landscape", 1169, 827)
应该是
PaperSize("A4Landscape", 827, 1169)
同样适用于肖像。