Printing textbok to printer

T

Tom McLaughlin

The following example I got from "QuickStarts" and it works well if you need
to print
a text file but how do I print text from a textbox to a printer?

Tom

Private printFont As Font

Private streamToPrint As StreamReader



'Event fired when the user presses the print button

Private Sub printButton_Click_1(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles printButton.Click



Try

streamToPrint = New StreamReader("TestText.Txt")

Try

printFont = New Font("Arial", 10)

Dim pd As PrintDocument = New PrintDocument() 'Assumes the
default printer

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage

pd.Print()

Finally

streamToPrint.Close()

End Try



Catch ex As Exception

MessageBox.Show("An error occurred printing the file - " +
ex.Message)

End Try



End Sub



' 'Event fired for each page to print

Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As
System.Drawing.Printing.PrintPageEventArgs)



Dim lpp As Single = 0

Dim yPos As Single = 0

Dim count As Integer = 0

Dim leftMargin As Single = ev.MarginBounds.Left

Dim topMargin As Single = ev.MarginBounds.Top

Dim line As String



'Work out the number of lines per page

'Use the MarginBounds on the event to do this

lpp = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)



'Now iterate over the file printing out each line

'NOTE WELL: This assumes that a single line is not wider than the
page width

'Check count first so that we don't read line that we won't print

line = streamToPrint.ReadLine()

While (count < lpp And line <> Nothing)



yPos = topMargin + (count * printFont.GetHeight(ev.Graphics))



'Print Preview control will not work.

ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, _

yPos, New StringFormat())



count = count + 1



If (count < lpp) Then

line = streamToPrint.ReadLine()

End If



End While



'If we have more lines then print another page

If (line <> Nothing) Then

ev.HasMorePages = True

Else

ev.HasMorePages = False

End If



End Sub
 
H

Herfried K. Wagner [MVP]

Tom McLaughlin said:
The following example I got from "QuickStarts" and it works well if you need
to print
a text file but how do I print text from a textbox to a printer?

You can split the text in the textbox into its lines ('Split' function)
and then you can print the array. You may want to use a variable that
stores the current line index.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top