2013-06-05 121 views
0

我正在制作程序,其中:在datagridview中选择几行后,它会检查是否选择了1个或更多。如果有的话,在一个页面上打印两份报告(一份报告=半页)如果更多:每页打印两份报告,打印尽可能多的页面。问题是,我的代码打印4531456453页相同的报告(第一和第二行):/用printdocument打印多个页面

的代码基本例如:

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

回答

1

希望这有助于SelectedRows数据和数据2 ...............

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 
+0

谢谢!它的工作如此完美:) –