在我的申请中,我有一个表格,用来创建员工身份证。一切都是好的,但我正面临一个问题,在打印它通过添加所有选定的身份证到一个(S)页。类似地,在1页中打印大约4张风景卡片非常容易,这可以使用打印文档方法以及rdlc报告来完成。在其中,我使用printdocument的PrintPage事件来完成工作和rdlc报表的参数。但这两张每张卡的限制是4张。但我想要的是说,有二十名新雇员/工作人员的身份证是必需的,我想一次全部打印出来。
我试过什么?
PrintDocument方法
将所有身份证添加到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报告,并在其中添加一个表,其中只有要显示的图像列。
但不幸的是,在这种情况下,这是最大的失败,因为它甚至不能显示一张图片。因此,我可以选择在报表上创建图片,并使用参数方法从表单中获取值,这再次限制我每次打印超过4张卡片。
发布于 2017-10-31 10:04:44
下面是一个在多个页面上打印项目列表的示例。在这种情况下,它对一页做了四次。
Const ITEMS_PER_PAGE As Integer = 4
Private items As List(Of Object)
Private itemIndex As Integer
Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
'Start from the beginning of the list.
itemIndex = 0
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
For i = 1 To ITEMS_PER_PAGE
If itemIndex = items.Count Then
'We're done.
Exit For
End If
Dim item = items(itemIndex)
'Print item here.
itemIndex += 1
Next
'Print another page if and only if we are not at the end of the list.
e.HasMorePages = itemIndex < items.Count
End Sub注意,itemIndex在调用PrintPage事件处理程序之间维护其值。
https://stackoverflow.com/questions/47030047
复制相似问题