2013-06-05 1 views
0

나는 다음과 같은 프로그램을 만들고있다. datagridview에서 몇 개의 행을 선택하면 1 개 이상이 선택되었는지 확인한다. 하나 인 경우 한 페이지에 두 개의 보고서 사본을 인쇄하십시오 (한 개의 보고서 = 절반 페이지). 더 많은 경우 : 페이지 당 두 개의 보고서를 인쇄하여 필요한만큼 인쇄하십시오. 나는 그것이 페이지의 무한한 양을 인쇄하기 전에 말했듯이, 지금 현재로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 

: 코드/

기본 예 : 문제는 내 코드 인쇄, (제 1 및 제 2 행) 같은 보고서의 4531456453 페이지입니다 데이터와 데이터 2 인덱스 0과 1

답변

1

희망이 도움이와 SelectedRows에서 ...............

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 

그리고 코드의 일부 modif ..

을 가진
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

고마워요! 그것은 너무 완벽하게 일했습니다 :) –