Code:
Private printedPageCount As Integer
Private startPage As Integer
Private endPage As Integer
Private Sub PrintDocument1_BeginPrint(ByVal sender As Object, ByVal e As PrintEventArgs) Handles PrintDocument1.BeginPrint
If e.PageSettings.PrinterSettings.PrintRange = PrintRange.SomePages Then
' check FromPage and ToPage are set to appropriate values
startPage = e.PageSettings.PrinterSettings.FromPage
endPage = e.PageSettings.PrinterSettings.ToPage
Else
startPage = 1
endPage = pages.count
End If
printedPageCount = 0
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim pageNumber As Integer
For p As Integer = startPage - 1 To endPage - 1
'If startPage = p Then
'Dim num As Integer
'num = p + 1
Label15.Text = "Page N° " & p + 1 & "/" & pages.Count
Dim rect2 = New Rectangle(690, 1122, CInt(PrintDocument1.DefaultPageSettings.PrintableArea.Width), Label15.Height)
e.Graphics.DrawString(Label15.Text, Label15.Font, Brushes.Black, rect2, sf2)
'End If
Dim cell As New Rectangle(startX, startY, DataGridView1.RowHeadersWidth, DataGridView1.ColumnHeadersHeight)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
e.Graphics.DrawRectangle(Pens.Black, cell)
startY += DataGridView1.ColumnHeadersHeight
For r As Integer = pages(p).startRow To pages(p).startRow + pages(p).rows - 1
cell = New Rectangle(startX, startY, DataGridView1.RowHeadersWidth, DataGridView1.Rows(r).Height)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
e.Graphics.DrawRectangle(Pens.Black, cell)
e.Graphics.DrawString(DataGridView1.Rows(r).HeaderCell.Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf)
startY += DataGridView1.Rows(r).Height
Next
startX += cell.Width
startY = rect.Bottom + 20
For c As Integer = pages(p).startCol To pages(p).startCol + pages(p).columns - 1
cell = New Rectangle(startX, startY, DataGridView1.Columns(c).Width, DataGridView1.ColumnHeadersHeight)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
e.Graphics.DrawRectangle(Pens.Black, cell)
e.Graphics.DrawString(DataGridView1.Columns(c).HeaderCell.Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf)
startX += DataGridView1.Columns(c).Width
Next
startY = rect.Bottom + DataGridView1.ColumnHeadersHeight + 20
For r As Integer = pages(p).startRow To pages(p).startRow + pages(p).rows - 1
startX = 50 + DataGridView1.RowHeadersWidth
For c As Integer = pages(p).startCol To pages(p).startCol + pages(p).columns - 1
cell = New Rectangle(startX, startY, DataGridView1.Columns(c).Width, DataGridView1.Rows(r).Height)
e.Graphics.DrawRectangle(Pens.Black, cell)
If DataGridView1.Columns(c).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Then
sf.Alignment = StringAlignment.Near
Else
sf.Alignment = StringAlignment.Near
End If
e.Graphics.DrawString(DataGridView1(c, r).Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf)
startX += DataGridView1.Columns(c).Width
Next
startY += DataGridView1.Rows(r).Height
Next
If p <> endPage - 1 Then
startPage = p + 1
e.HasMorePages = True
Return '***ooops - edited here***
Else
startPage = 1
End If
Next
End Sub