如果我在数据库中的特定表中有100个或更多的数据,请使用打印文档帮助vb.net。如何检索其他信息或数据,并与其他数据连续打印在下一页。
例:在第1页中,25个数据,第2、第3和第4页也是25个数据。
这是我的密码:
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim rect As New Rectangle(20, 10, CInt(PrintDocument1.DefaultPageSettings.PrintableArea.Width), Panel2.Height)
Static startPage As Integer = 0
For p As Integer = startPage To pages.Count - 1
Dim cell As New Rectangle(startX, startY, dgw.RowHeadersWidth, dgw.ColumnHeadersHeight)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
e.Graphics.DrawRectangle(Pens.Black, cell)
startY += dgw.ColumnHeadersHeight
For r As Integer = pages(p).startRow To pages(p).startRow + pages(p).rows - 1
cell = New Rectangle(startX, startY, dgw.RowHeadersWidth, dgw.Rows(r).Height)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
e.Graphics.DrawRectangle(Pens.Black, cell)
startY += dgw.Rows(r).Height
Next
startX += cell.Width
startY = rect.Bottom
For c As Integer = pages(p).startCol To pages(p).startCol + pages(p).columns - 1
cell = New Rectangle(startX, startY, dgw.Columns(c).Width, dgw.ColumnHeadersHeight)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
e.Graphics.DrawRectangle(Pens.Black, cell)
e.Graphics.DrawString(dgw.Columns(c).HeaderCell.Value.ToString, dgw.Font, Brushes.Black, cell, sf)
startX += dgw.Columns(c).Width
Next
startY = rect.Bottom + dgw.ColumnHeadersHeight
For r As Integer = pages(p).startRow To pages(p).startRow + pages(p).rows - 1
startX = 50 + dgw.RowHeadersWidth
For c As Integer = pages(p).startCol To pages(p).startCol + pages(p).columns - 1
cell = New Rectangle(startX, startY, dgw.Columns(c).Width, dgw.Rows(r).Height)
e.Graphics.DrawRectangle(Pens.Black, cell)
e.Graphics.DrawString(dgw(c, r).Value.ToString, dgw.Font, Brushes.Black, cell, sf)
startX += dgw.Columns(c).Width
Next
startY += dgw.Rows(r).Height
Next
If p <> pages.Count - 1 Then
startPage = p + 1
e.HasMorePages = True
Return
Else
startPage = 0
End If
Next
End Sub发布于 2014-02-02 15:54:47
好的,首先,除非我犯了很大的错误,否则每次调用新页面时都会引发PrintPage。因此,在PrintPage事件处理程序中所要做的就是为该特定页面编写内容,而不是一次为所有页面编写内容。
检索其他数据和主数据应该不会有任何问题。唯一会给你带来麻烦的时间是,如果你的其他数据垂直扩展页面,那么你的数据中只有不到25的数据可以放在页面上。但如果你知道每一次都会符合25,这应该是相当容易的。
如果你有具体的问题,扩展你的问题,说明问题是什么,我会尝试回答它们。
您可能还会发现这篇文章很有用。
https://stackoverflow.com/questions/21512539
复制相似问题