用PrintForm控件,在Visual Basic PowerPacks项目列表中vb2008 SP1以后版本就有了,下面是代码
公司主营业务:成都网站设计、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出富民免费做网站回馈大家。
Imports System.Drawing.Printing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'先设置打印页面的页边距
With Me.PrintForm1
Dim myMargins As New Margins '页边距设置信息是存放在这个Margins类型的对象中的
With myMargins '分别设置上下左右边距,
.Left = 12
.Right = 12
.Top = 12
.Bottom = 12
End With
.PrinterSettings.DefaultPageSettings.Margins = myMargins '把myMargins对象赋给PrintForm1的设置属性
End With
Me.Button1.Visible = False '这个是在打印的时候隐藏打印按钮
Me.PrintForm1.Form = Me '设置要打印的窗体
Me.PrintForm1.Print() '调用打印窗体方法
Me.Button1.Visible = True '再把隐藏的打印按钮显示出来
End Sub
VB可以用CurrentX、CurrentY 属性实现定位打印。用ScaleMode 属性确定打印机对象坐标的度量单位。
CurrentX、CurrentY 属性,返回或设置下一次打印或绘图方法的 水平 (CurrentX) 或垂直
(CurrentY) 坐标。
ScaleMode 属性,当使用图形方法或调整控件位置时,返回或设置一个值,该值指示对象坐标的度量单位。
具体实现代码:
Option Explicit
Dim X As Long
Dim y As Long
Dim fnt As Variant
Dim txt As String
Dim dy As Variant
Public Function prnt(X As Variant, y As Variant, fnt As Variant, txt As Variant)
Printer.CurrentX = X
Printer.CurrentY = y
Printer.FontSize = fnt
Printer.Print txt
End Function
Private Sub Command1_Click()
Printer.ScaleMode = 6 '以mm定位
Printer.CurrentX = 10
Printer.CurrentY = 20
fnt = 12
txt = "YD(0)"
dy = prnt(X, y, fnt, txt)
Printer.EndDoc
End Sub
可以调用窗体的PrintForm方法用打印机打印整个窗体,比如
[窗体名字.]PrintForm
如果省略窗体名字表示打印当前窗体。
需要注意的是,用PrintForm方法时必须先显示窗体。打印的内容是整个窗体图像,包括菜单栏,标题栏等。另外,如果窗体包括图形,必须将窗体的AutoRedraw属性设为True时才可以。