Print and Preview DataGridView in Landscape format

24,140

Try setting the DefaultPageSettings property of the PrintDocument, not PrinterSettings:

'PrintDocument1.PrinterSettings.DefaultPageSettings.Landscape = True
PrintDocument1.DefaultPageSettings.Landscape = True
Share:
24,140
Rara Arar
Author by

Rara Arar

Updated on November 13, 2020

Comments

  • Rara Arar
    Rara Arar over 3 years
     Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click
        preview.PrintPreviewControl.Zoom = 1
        preview.Document = print
        print.PrinterSettings.DefaultPageSettings.Landscape = True
        preview.Show()
    
        AddHandler print.PrintPage, AddressOf print_PrintPage
    
    End Sub
    
    Protected Sub print_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
        Dim ColumnCount As Integer = DataGridView1.ColumnCount
        Dim RowCount As Integer = DataGridView1.RowCount
    
        Dim CellTopPos As Integer = print.PrinterSettings.DefaultPageSettings.Margins.Top
    
        For Row = 0 To RowCount - 1
    
            Dim CellLeftPos As Integer = print.PrinterSettings.DefaultPageSettings.Margins.Left
    
            For Cell = 0 To ColumnCount - 1
    
                Dim CellValue As String = DataGridView1.Rows(Row).Cells(Cell).Value.ToString()
                Dim CellWidth = DataGridView1.Rows(Row).Cells(Cell).Size.Width + 50
                Dim CellHeight = DataGridView1.Rows(Row).Cells(Cell).Size.Height
    
                Dim Brush As New SolidBrush(Color.Black)
                e.Graphics.DrawString(CellValue, New Font("Century Gothic", 10), Brush, CellLeftPos, CellTopPos)
                e.Graphics.DrawRectangle(Pens.Black, CellLeftPos, CellTopPos, CellWidth, CellHeight)
    
                CellLeftPos += CellWidth
            Next
    
            CellTopPos += DataGridView1.Rows(Row).Cells(0).Size.Height
        Next
    
    End Sub
    

    This is my code for previewing and printing the contents of my datagridview. I tried using the DefaultPageSettings code but it doesn't work. Im also trying to print it in centered format