It has come to my attention that the following might solve the problem, but if there are any more advice please do tell me.
ProtectedSub PrintFile_Click(sender AsObject, e As[FONT=Verdana, Arial, Helvetica, sans-serif] System.EventArgs)[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]printDialog1.Document = ThePrintDocument[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] strText AsString = Me[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif].richTextBox1.Text[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]myReader = [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]New StringReader(strText)[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]If[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] printDialog1.ShowDialog() = DialogResult.OK [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Then[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Me[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif].ThePrintDocument.Print()[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]End[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]If[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]End[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Sub'PrintFile_Click[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Protected[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Sub ThePrintDocument_PrintPage(sender AsObject, ev As System.Drawing.Printing.PrintPageEventArgs)[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] linesPerPage AsSingle = 0[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] yPosition AsSingle = 0[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] count AsInteger = 0[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] leftMargin AsSingle = ev.MarginBounds.Left[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] topMargin AsSingle = ev.MarginBounds.Top[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] line AsString = [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Nothing[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] printFont As Font = Me.richTextBox1.Font[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Dim[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] myBrush AsNew SolidBrush(Color.Black)[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]' Work out the number of lines per page, using the MarginBounds.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]' Iterate over the string using the StringReader, printing each line.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]While[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] count < linesPerPage AndNot ((line <= myReader.ReadLine()) IsNothing) [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]'ToDo: Unsupported feature: assignment within expression. "=" changed to "<="[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]' calculate the next line position based on[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]' the height of the font according to the printing device yPosition = topMargin + (count * printFont.GetHeight(ev.Graphics));// draw the next line in the rich edit control[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ev.Graphics.DrawString(line, printFont, myBrush, leftMargin, yPosition, [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]New[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif] StringFormat())[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]count += 1[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]End[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]While' If there are more lines, print another page. if (line != null)[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]ev.HasMorePages = [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]True[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]ev.HasMorePages = [/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]False[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]myBrush.Dispose()[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]End[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]Sub[/FONT][FONT=Verdana, Arial, Helvetica, sans-serif]'ThePrintDocument_PrintPage [/FONT]