我正在尝试使用PrintDocument打印出DataGridView。在我的PrintPage事件处理程序中,我使用e.Graphics对象绘制一些网格线,然后在创建的“单元格”中打印一些文本 - 除此之外,这实际上应该由Microsoft完成,但我离题了。 p>
无论如何,这很好用。 PrintDocument绑定到PrintPreviewDialog,当我打开它时,DGV正确呈现。用户可以单击“预览”对话框的“打印”按钮并进行打印输出。我的问题是,有时DGV对于页面而言太宽,所以我希望能够缩放它(仅水平)以适应。我在打电话
e.Graphics.ScaleTransform(printableWidth / gridWidth)
在我真正开始绘制任何东西之前这使得预览看起来完全按照我想要的方式进行,但由于某种原因,实际的打印输出看起来与我添加缩放代码之前的情况完全一样 - 如果报告太宽,它只是落在了一边页面!
PrintPage事件处理预览的方式与发送到打印机的方式有什么区别吗?我的普通PostScript办公室激光打印机是否无法处理ScaleTransform功能?我认为它应该只是盲目地打印发送给它的内容,但也许涉及的处理比我想象的要多。
答案 0 :(得分:0)
好的,我发现了我的问题 - 我以为我正在为每个页面调用ScaleTransform,但事实证明它实际上只是在第一次调用PrintPage处理程序时执行。随后的调用由于条件被包装而跳过该行。所以明智的话 - 确保如果你想要转换你的打印输出,你可以为每一页独立完成。