以下是打印richtext中的文本的例子:'*******************************************
以下为打印部分的功能代码************************************************* Private Sub printdoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printdoc.PrintPage
Dim g As Graphics '定义指向Grapics的指针
Dim linesperpage As Long '定义每页中可打印的文本行数
Dim current As Long '定义打印的当前行
Dim y As Double '当前的纵坐标
Dim left As Double '定义左边距
Dim top As Double '定义顶边距
Dim stroutput As String '定义将要输出的文本
Dim printfont As System.Drawing.Font '定义打印字体
Dim brush As New System.Drawing.SolidBrush(Color.Black) '定义打印时使用的刷子
Dim activechild As Form '定义当前活动的子窗体
Dim thebox As RichTextBox '定义子窗体中的RICHTEXTBOX控件 activechild = Me.ActiveMdiChild '获得当前活动的SON窗体
thebox = CType(activechild.ActiveControl, RichTextBox) '获得当前活动子窗体中的控件
printfont = thebox.Font '获得打印的字体
g = e.Graphics '获得对象
left = e.MarginBounds.Left '设置页面的左边距
top = e.MarginBounds.Top '设置页面的顶边距
linesperpage = e.MarginBounds.Height / printfont.GetHeight(g) - 4 '设置每页将要打印的行数,顶端空出两行用于打印标题,底煅空出两行用于打印注脚.
y = top '设置打印的起始位置
g.DrawString(activechild.Text, printfont, brush, left, y) '输出标题
y = top + 2 * printfont.GetHeight(g) '设置正文的输出位置 '循环输出正文的每一行()
While current < linesperpage
stroutput = line.ReadLine() '读取将要输出的内容
If Not stroutput Is Nothing Then '如果没有将要打印的内容,则中止循环
y = y + printfont.GetHeight(g) '计算将要输出的纵坐标的位置
g.DrawString(stroutput, printfont, brush, left, y) '输出正文
Else
Exit While
End If
End While
y = e.MarginBounds.Bottom - printfont.GetHeight(g) '设置注脚的输出位置
g.DrawString("footer", printfont, brush, e.MarginBounds.Width / 2, y) '输出注脚
If Not stroutput Is Nothing Then '如果这一页没有打印完正文,则将属性设置为true,这将再一次激发printpage事件
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
'**************************以下为页面设置功能代码****************************** Private Sub menpagesetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menpagesetup.Click
Dim pagesetup As New PageSetupDialog()
pagesetup.Document = printdoc
pagesetup.ShowDialog()
End Sub
'******************************以下为打印设置功能代码************************ Private Sub menprintsetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menprintsetup.Click
Dim printersetup As New PrintDialog()
printersetup.Document = printdoc
printersetup.ShowDialog()
End Sub '******************************以下为打印预览功能代码************************ Private Sub menprintview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menprintview.Click
Dim activechild As Form = Me.ActiveMdiChild
If Not activechild Is Nothing Then
'Dim preview As New PrintPreviewDialog()
Me.PrintPreviewDialog1.Document = printdoc
Dim thebox As RichTextBox
thebox = CType(activechild.ActiveControl, RichTextBox)
line = New System.IO.StringReader(thebox.Text)
Try
Me.PrintPreviewDialog1.StartPosition = FormStartPosition.CenterScreen
Me.PrintPreviewDialog1.ShowDialog()
Catch e1 As Exception
MsgBox(e1.StackTrace)
End Try
End If
End Sub
'*******************************以下为打印功能的代码***************************** Private Sub menprint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menprint.Click
Dim activechild As Form = Me.ActiveMdiChild
If Not activechild Is Nothing Then
Dim printersetup As New PrintDialog()
printersetup.Document = printdoc
If printersetup.ShowDialog() = DialogResult.OK Then
Dim thebox As RichTextBox
thebox = CType(activechild.ActiveControl, RichTextBox)
line = New System.IO.StringReader(thebox.Text) '初始化字符串流
Try
printdoc.Print()
Catch e1 As Exception
MsgBox(e1.StackTrace)
printdoc.PrintController.OnEndPrint(printdoc, e)
End Try
End If
End If
End Sub
以下为打印部分的功能代码************************************************* Private Sub printdoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printdoc.PrintPage
Dim g As Graphics '定义指向Grapics的指针
Dim linesperpage As Long '定义每页中可打印的文本行数
Dim current As Long '定义打印的当前行
Dim y As Double '当前的纵坐标
Dim left As Double '定义左边距
Dim top As Double '定义顶边距
Dim stroutput As String '定义将要输出的文本
Dim printfont As System.Drawing.Font '定义打印字体
Dim brush As New System.Drawing.SolidBrush(Color.Black) '定义打印时使用的刷子
Dim activechild As Form '定义当前活动的子窗体
Dim thebox As RichTextBox '定义子窗体中的RICHTEXTBOX控件 activechild = Me.ActiveMdiChild '获得当前活动的SON窗体
thebox = CType(activechild.ActiveControl, RichTextBox) '获得当前活动子窗体中的控件
printfont = thebox.Font '获得打印的字体
g = e.Graphics '获得对象
left = e.MarginBounds.Left '设置页面的左边距
top = e.MarginBounds.Top '设置页面的顶边距
linesperpage = e.MarginBounds.Height / printfont.GetHeight(g) - 4 '设置每页将要打印的行数,顶端空出两行用于打印标题,底煅空出两行用于打印注脚.
y = top '设置打印的起始位置
g.DrawString(activechild.Text, printfont, brush, left, y) '输出标题
y = top + 2 * printfont.GetHeight(g) '设置正文的输出位置 '循环输出正文的每一行()
While current < linesperpage
stroutput = line.ReadLine() '读取将要输出的内容
If Not stroutput Is Nothing Then '如果没有将要打印的内容,则中止循环
y = y + printfont.GetHeight(g) '计算将要输出的纵坐标的位置
g.DrawString(stroutput, printfont, brush, left, y) '输出正文
Else
Exit While
End If
End While
y = e.MarginBounds.Bottom - printfont.GetHeight(g) '设置注脚的输出位置
g.DrawString("footer", printfont, brush, e.MarginBounds.Width / 2, y) '输出注脚
If Not stroutput Is Nothing Then '如果这一页没有打印完正文,则将属性设置为true,这将再一次激发printpage事件
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
'**************************以下为页面设置功能代码****************************** Private Sub menpagesetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menpagesetup.Click
Dim pagesetup As New PageSetupDialog()
pagesetup.Document = printdoc
pagesetup.ShowDialog()
End Sub
'******************************以下为打印设置功能代码************************ Private Sub menprintsetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menprintsetup.Click
Dim printersetup As New PrintDialog()
printersetup.Document = printdoc
printersetup.ShowDialog()
End Sub '******************************以下为打印预览功能代码************************ Private Sub menprintview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menprintview.Click
Dim activechild As Form = Me.ActiveMdiChild
If Not activechild Is Nothing Then
'Dim preview As New PrintPreviewDialog()
Me.PrintPreviewDialog1.Document = printdoc
Dim thebox As RichTextBox
thebox = CType(activechild.ActiveControl, RichTextBox)
line = New System.IO.StringReader(thebox.Text)
Try
Me.PrintPreviewDialog1.StartPosition = FormStartPosition.CenterScreen
Me.PrintPreviewDialog1.ShowDialog()
Catch e1 As Exception
MsgBox(e1.StackTrace)
End Try
End If
End Sub
'*******************************以下为打印功能的代码***************************** Private Sub menprint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menprint.Click
Dim activechild As Form = Me.ActiveMdiChild
If Not activechild Is Nothing Then
Dim printersetup As New PrintDialog()
printersetup.Document = printdoc
If printersetup.ShowDialog() = DialogResult.OK Then
Dim thebox As RichTextBox
thebox = CType(activechild.ActiveControl, RichTextBox)
line = New System.IO.StringReader(thebox.Text) '初始化字符串流
Try
printdoc.Print()
Catch e1 As Exception
MsgBox(e1.StackTrace)
printdoc.PrintController.OnEndPrint(printdoc, e)
End Try
End If
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货