Results 1 to 37 of 37

Thread: [RESOLVED] How to select the page number to print in print preview dialog box?

Threaded View

  1. #18
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    26,413

    Re: How to select the page number to print in print preview dialog box?

    Try this... You need to be sure FromPage and ToPage are always set correctly starting at page 1 (or 2 or 3, not zero based)... etc...

    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
    Last edited by .paul.; Nov 12th, 2022 at 03:09 AM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width