Boas pessoal.. tenho uma form com um datagrid, e quero que imprima os dados.. quando é uma página dá tudo bem.. mas se é mais do que uma não consigo por isto a dar direito.. PHP: Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage 'Margens Dim margem_esq, margem_dir As Integer margem_esq = 50 margem_dir = 770 Dim LinhasLidas As Integer = 0 cont = 295 'Desenho If My.Computer.FileSystem.FileExists("C:\Temp\" & endereco_logo) Then Else My.Computer.Network.DownloadFile("ftp://" & ftp_server & "/ftproot/" & endereco_logo, "C:\Temp\" & endereco_logo, "root", "zaqwerty") End If If endereco_logo = "" Then Else e.Graphics.DrawImage(Image.FromFile("C:\Temp\" & endereco_logo), margem_esq, 35, 100, 100) End If e.Graphics.DrawString("LOCAL EXPEDIÇÃO", font3, Brushes.Black, 185, 35) e.Graphics.DrawString(nome, font3, Brushes.Black, 170, 50) e.Graphics.DrawString(morada, font3, Brushes.Black, 170, 65) e.Graphics.DrawString(cp & " " & localidade, font3, Brushes.Black, 170, 80) e.Graphics.DrawString("Telefone: " & ntelefone & " Fax: " & fax, font3, Brushes.Black, 170, 95) e.Graphics.DrawString("Factura / Recibo", font1, Brushes.Black, 535, 25) e.Graphics.DrawString("Pág. 1 de 1", font3, Brushes.Black, 535, 45) e.Graphics.DrawString(lblnome.Text, font1, Brushes.Black, 450, 165) e.Graphics.DrawString(morada_cliente, font1, Brushes.Black, 450, 180) e.Graphics.DrawString(cp_cliente, font1, Brushes.Black, 450, 195) e.Graphics.DrawString(local_cliente, font1, Brushes.Black, 510, 195) e.Graphics.DrawString("Factura nº " & lbln.Text, font1, Brushes.Black, margem_esq, 170) e.Graphics.DrawString("Data " & data2, font1, Brushes.Black, margem_esq, 185) e.Graphics.DrawString("Moeda EUR", font1, Brushes.Black, margem_esq, 200) e.Graphics.DrawString("Pagamento Pronto Pagamento ", font1, Brushes.Black, margem_esq, 215) e.Graphics.DrawString("Nº contribuinte " & NIF, font1, Brushes.Black, margem_esq, 230) 'Divisão da folha e.Graphics.DrawLine(Pens.Black, margem_esq, 270, margem_dir, 270) e.Graphics.DrawString("Código", font6, Brushes.Black, margem_esq, 275) e.Graphics.DrawString("Descrição", font6, Brushes.Black, 185, 275) e.Graphics.DrawString("Quant.", font6, Brushes.Black, 450, 275) e.Graphics.DrawString("Preço unit. C/ IVA", font6, Brushes.Black, 500, 275) e.Graphics.DrawString("Total C/ IVA", font6, Brushes.Black, 620, 275) e.Graphics.DrawString("IVA", font6, Brushes.Black, 740, 275) e.Graphics.DrawLine(Pens.Black, margem_esq, 290, margem_dir, 290) 'Rodapé e.Graphics.DrawString("Processado por computador @ HouseGest V1.0", font3, Brushes.Black, margem_esq, 1080) e.Graphics.DrawString(nome & " - " & morada & " , " & cp & " - " & localidade & " - " & "Capital Social " & capital & "€ Contribuinte " & NIF, font5, Brushes.Black, margem_esq, 1100) 'Rodapé esquerda e.Graphics.DrawLine(Pens.Black, margem_esq, 950, margem_dir, 950) e.Graphics.DrawString("Telefone :" & telefone_cliente, font4, Brushes.Black, margem_esq, 970) 'Rodapé Centro e.Graphics.DrawString("Carga: Nossas Instalações", font1, Brushes.Black, 300, 990) e.Graphics.DrawString("Data: " & Date.Now.ToShortDateString, font1, Brushes.Black, 300, 1005) e.Graphics.DrawString("Hora: " & Date.Now.ToShortTimeString, font1, Brushes.Black, 300, 1020) e.Graphics.DrawString("Descarga: Instalações do Cliente", font1, Brushes.Black, 300, 1035) e.Graphics.DrawString("Expedição: ____-____-____", font1, Brushes.Black, 300, 1065) 'Rodapé Direita e.Graphics.DrawString("TOTAL EUR ", font_preco, Brushes.Black, 520, 1050) e.Graphics.DrawString(lbl_total.Text & " €", font_preco, Brushes.Black, 650, 1050) 'Desenha/Escreve produtos comprados If LinhasLidas <= LinhasImpressas Then For linha = 0 To DataGridView1.RowCount - 2 If cont < 900 Then e.Graphics.DrawString(DataGridView1.Item(0, linha).Value.ToString, font_codigo, Brushes.Black, margem_esq, cont) e.Graphics.DrawString(DataGridView1.Item(1, linha).Value.ToString, font1, Brushes.Black, 145, cont) e.Graphics.DrawString(DataGridView1.Item(4, linha).Value.ToString, font1, Brushes.Black, 445, cont) e.Graphics.DrawString(DataGridView1.Item(2, linha).Value.ToString, font1, Brushes.Black, 510, cont) e.Graphics.DrawString(DataGridView1.Item(3, linha).Value.ToString, font1, Brushes.Black, 740, cont) e.Graphics.DrawString(DataGridView1.Item(5, linha).Value.ToString, font1, Brushes.Black, 620, cont) cont += 25 Else LinhasImpressas = LinhasLidas If cont < 900 Then e.HasMorePages = False Else e.HasMorePages = True End If cont = 295 End If LinhasLidas += 1 Next End If End Sub O problema é que ou está sempre a inserir páginas, ou então os registos saem uns por cima de outros.. e ficam também os mesmos... i need help ^^