Here is my code:
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Data
Imports System.Data.OleDb
Public Class Form3
Dim dgv As New DataGridView()
Dim print As New PrintDocument()
Dim preview As New PrintPreviewDialog()
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\Users\user\Documents\Inventory\InventoryLogin\InventoryLogin\Supplies.mdb")
Try
con.Open()
Dim sql As String
sql = "SELECT * From [product info]"
Dim adapter As New OleDbDataAdapter(sql, con)
Dim dt As New DataTable("product info")
adapter.Fill(dt)
preview.PrintPreviewControl.Zoom = 1
preview.Document = print
preview.Show()
AddHandler print.PrintPage, AddressOf print_PrintPage
Catch Ex As Exception
MessageBox.Show(Ex.Message)
End Try
End Sub
Protected Sub print_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim ColumnCount As Integer = dgv.ColumnCount
Dim RowCount As Integer = dgv.RowCount
Dim CellTopPos As Integer = print.PrinterSettings.DefaultPageSettings.Margins.Top
For Row = 0 To RowCount - 2
Dim CellLeftPos As Integer = print.PrinterSettings.DefaultPageSettings.Margins.Left
For Cell = 0 To ColumnCount - 1
Dim CellValue As String = dgv.Rows(Row).Cells(Cell).Value.ToString()
Dim CellWidth = dgv.Rows(Row).Cells(Cell).Size.Width + 10
Dim CellHeight = dgv.Rows(Row).Cells(Cell).Size.Height
Dim Brush As New SolidBrush(Color.Black)
e.Graphics.DrawString(CellValue, New Font("tahoma", 10), Brush, CellLeftPos, CellTopPos)
e.Graphics.DrawRectangle(Pens.Black, CellLeftPos, CellTopPos, CellWidth, CellHeight)
CellLeftPos += CellWidth
Next
CellTopPos += dgv.Rows(Row).Cells(0).Size.Height
Next
End Sub
End Class
I am trying to preview and print the items in my datagridview in vb.net The user needs to click the "Print Preview" button to view the document before printing it, but when i click the button it just shows an empty page. How can i make the records in the datagridview appear in my preview page?
I removed the Dim dgv As New DataGridView and replaced with the name of the current DataGridView.