Sample prints the content of richTextBox
ImportsDeclarationsCode:Imports System.Drawing.Printing Imports System.IOPrint ButtonCode:Dim printDialog1 As PrintDialog Dim WithEvents pDoc As PrintDocument Dim myReader As StringReader Dim line As String = NothingCode:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click printDialog1 = New PrintDialog pDoc = New PrintDocument() printDialog1.Document = pDoc Dim strText As String = Me.richTextBox1.Text myReader = New StringReader(strText) If printDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then pDoc.Print() End If End SubCode:Private Sub mdoc_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles pDoc.BeginPrint line = myReader.ReadLine End SubCode:Private Sub mdoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pDoc.PrintPage Dim yPosition As Single = 0 'initial position Dim count As Integer = 0 'line counter Dim leftMargin As Single = e.MarginBounds.Left Dim topMargin As Single = e.MarginBounds.Top Dim printFont As Font = Me.RichTextBox1.Font 'get number of lines per page Dim linesPerPage As Single = e.MarginBounds.Height / printFont.GetHeight(e.Graphics) ' Iterate over the string using the StringReader, printing each line. While count < linesPerPage And Not (line Is Nothing) ' get next line position yPosition = (topMargin + (count * printFont.GetHeight(e.Graphics))) 'draw line e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPosition, New StringFormat()) count += 1 'get next line line = myReader.ReadLine End While ' If there are more lines, print another page. If Not (line Is Nothing) Then e.HasMorePages = True Else e.HasMorePages = False End If End Sub




Reply With Quote