【发布时间】:2017-10-31 07:33:08
【问题描述】:
在我的应用程序中,我有一个用于创建员工身份证的表格。一切都很好,但是通过将所有选定的身份证添加到页面来打印它时我遇到了问题。就像在 1 页中打印大约 4 张横向卡片非常容易,这可以使用打印文档方法以及 rdlc 报告来完成。我使用 printdocument 的 PrintPage 事件来完成这项工作和 rdlc 报告的参数。但两者都限制为每次打印 4 张卡片。但我想要的是假设有 20 名新员工/员工需要身份证,我想一次性打印出来。
我尝试了什么?
打印文档方法
将所有 ID 卡添加到 DataGridView,然后在 PrintDocument 的 PrintPage 事件中使用此代码
Dim i as integer = 25
For j as Integer = 0 To dgv.rowcount - 1
e.Graphics.DrawImage(dgv.rows(j).Cells(0).Value, 25, i, 375, 236)
i += 241
Next
i = 25
但是每次打印最多只能打印 4 张卡片。我尝试使用
e.HasMorePages = True,但无法获得我想要的东西。
RDLC 报告方法
创建一个 DataSet DS1,并添加一个列名与我的 datagridview 列名相同的表,然后使用 DataSet DS1 创建一个 rdlc 报告,并在其中添加一个表,其中只有图像列可见。
但不幸的是,这是本例中最大的失败,因为它甚至无法显示单张图片。所以我可以选择在报表上创建图片并使用 Parameter 方法从表单中获取值,这再次限制了我每次打印超过 4 张卡片。
【问题讨论】:
-
PrintPage事件处理程序的重点是打印页面。如果您只能在页面上放置四张卡片,那么您只需在事件处理程序中绘制四张卡片。你需要记录你已经抽了多少张牌,每次都从下一张开始。HasMorePages设置为True仅当有更多要打印时。 -
是的,伙计,你是对的!这就是我想做但做不到的事情。一点编码建议可能会有很大帮助... :)
标签: vb.net datagridview report printdocument