![](/img/trans.png)
[英]Printing multiple pages using PrintDocument and HasMorePages
[英]Printing multiple pages with printdocument
我正在編寫程序,其中:在datagridview中選擇了幾行后,它會檢查是否選擇了1個或更多行。 如果是一份,則在一頁上打印兩份報告(一份=半頁)。如果更多:每頁打印兩份報告,打印所需的頁數。 問題是,我的代碼打印了相同報告的4531456453頁(第一行和第二行):/
基本代碼示例:
yPos = 0
Do While tmpI < mydatagridview.SelectedRows.Count - 1
For Each selectedrow As DataGridViewRow In mydatagridview.SelectedRows
Dim data as string = mydatagridview.SelectedRows(selectedrow.index).cells(1).value
Dim data2 as string = mydatagridview.SelectedRows(selectedrow.index).cells(12).value
e.graphics.drawstring(data, drawfont, (e.graphics.pagebound.width/2-e.graphics.measurestring(data, drawfont).width/2), 25+yPos)
e.graphics.drawstring(data2, drawfont, (e.graphics.pagebound.width/2-e.graphics.measurestring(data2, drawfont).width/2), 50+yPos)
yPos += e.pagebounds.height/2
tmpI += 1
If yPos > e.pagebound.height/2 Then
h = 0
e.HasMorePages = true
Exit Sub
End If
Next selecedrow
Loop
截至目前,正如我之前所說的,它從帶有索引0和1的SelectedRows中打印出無限量的包含data和data2的頁面。
希望這可以幫助 ...............
Sub PrintIt(ByVal e As System.Drawing.Printing.PrintPageEventArgs, byval nRow as Integer,ByVal nY As Integer)
Dim data as string = mydatagridview.SelectedRows(nRow).cells(1).value
Dim data2 as string = mydatagridview.SelectedRows(nRow).cells(12).value
e.graphics.drawstring(data, drawfont, (e.graphics.pagebound.width/2-e.graphics.measurestring(data, drawfont).width/2), 25+nY)
e.graphics.drawstring(data2, drawfont, (e.graphics.pagebound.width/2-e.graphics.measurestring(data2, drawfont).width/2), 50+nY)
End Sub
以及代碼中的一些修改..
yPos = 0
If mydatagridview.SelectedRows.Count = 1
PrintIt(e,0,yPos)
yPos += e.pagebounds.height/2
PrintIt(e,0,yPos)
Elseif mydatagridview.SelectedRows.Count > 1
Dim x,n As Integer
For x = 0 to mydatagridview.SelectedRows.Count-1
If n = 2 Then
e.HasMorePages = true
n = 0
yPos = 0
End If
PrintIt(e,x,yPos)
yPos += e.pagebounds.height/2
n += 1
Next
End If
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.