Imports System Imports System.Windows.Forms Imports System.Drawing.Printing Public Class Form1 'declarations somewhere Public Shared pd As New System.Drawing.Printing.PrintDocument Public Shared PrintFont As Font Public Shared FiletoPrint As System.IO.StreamReader Dim prtdoc As New PrintDocument Dim strDefaultPrinter As String = prtdoc.PrinterSettings.PrinterName 'in the function to print 'Printpage function Public Shared Sub printPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Dim linesPerPage As Single = 0 Dim yPos As Single = 0 Dim count As Integer = 0 Dim leftMargin As Single = 0 Dim topmargin As Single = 0 Dim line As String = Nothing Try e.PageSettings.Landscape = False linesPerPage = e.MarginBounds.Height / PrintFont.GetHeight(e.Graphics) While count < linesPerPage line = FiletoPrint.ReadLine If line Is Nothing Then Exit While yPos = topmargin + count * PrintFont.GetHeight(e.Graphics) e.Graphics.DrawString(line, PrintFont, Brushes.Black, leftMargin, yPos, New StringFormat) count += 1 End While If Not (line Is Nothing) Then e.HasMorePages = True Catch ex As Exception End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.OpenFileDialog1.ShowDialog() PrintFont = New Font("Arial", 10) FiletoPrint = New System.IO.StreamReader(Me.OpenFileDialog1.FileName) AddHandler pd.PrintPage, New System.Drawing.Printing.PrintPageEventHandler(AddressOf printPage) 'pd.PrinterSettings.PrinterName = Me.ComboBox1.SelectedText pd.Print() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim prtdoc As New PrintDocument() Dim strDefaultPrinter As String = prtdoc.PrinterSettings.PrinterName Dim strPrinter As [String] For Each strPrinter In PrinterSettings.InstalledPrinters ComboBox1.Items.Add(strPrinter) If strPrinter = strDefaultPrinter Then ComboBox1.SelectedIndex = ComboBox1.Items.IndexOf(strPrinter) End If Next strPrinter End Sub End Class