vb.net - 自动填充贴纸并打印多个
问题描述
我有一张信息表,对应于我想在通用贴纸上打印的详细信息。所以假设贴纸有姓名、姓氏、员工编号,我的表有 10 行,表示有 10 名员工。我将打开对话框页面进行打印并且我没有选择打印机,在选择打印机后,我希望它从每一行中获取保存的值打印每个员工信息的标签。
目前,我只编写了常规打印和创建信息表的程序。我只是想知道打印循环会如何进行,我认为它应该是这样的:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
PrintDialog1.Document = PrintDocument1
PrintDialog1.PrinterSettings = PrintDocument1.PrinterSettings
If PrintDialog1.ShowDialog = DialogResult.OK Then
PrintDocument1.DefaultPageSettings.Landscape = True
For Each row In Table1
Employeename.Text = NameRow
Employeelastname.text = LastNameRow
EnployeeNumber.text = EmployeeNumberCell
PrintDocument1.Print()
Next
End If
End Sub
解决方案
顾名思义,打印一页的PrintPage
事件。PrintDocument
如果要打印多页,则需要多次引发该事件。当有更多页面要打印时,您可以通过在事件处理程序中设置e.HasMorePages
属性来做到这一点。True
这是一个从 a 每页打印一条记录的简单示例DataTable
:
'The data to be printed.
Private table As DataTable
'The index of the row to print.
Private rowIndex As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Start printing at the first row.
rowIndex = 0
'Print the data.
PrintDocument1.Print()
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'Get the current row.
Dim row = table.Rows(rowIndex)
'Print the current row.
e.Graphics.DrawString(row.Field(Of String)("SomeColumn"), Me.Font, Brushes.Black, 50, 50)
rowIndex += 1
'Print another page if and only if there is another row to be printed.
e.HasMorePages = rowIndex < table.Rows.Count
End Sub
您可以修改PrintPage
事件处理程序中的实际打印代码,以在您想要的任何布局中打印您想要的任何数据。如果您有多个要打印的值,那么您可以多次调用e.Graphics.DrawX
方法。如果它是您要打印的所有文本,那么它将全部DrawString
调用,但您需要DrawImage
打印图像和DrawRectangle
等,用于打印形状。