请教vb.net的打印分页问题,各位高手帮帮忙

aruz 2004-12-20 03:59:22
刚学没多久,最近做一个小程序,遇到一个 打印分页问题,我查到msdn也是这么用的,可是运行是总是重复第一页
n次,我的PrintDocument1程序如下

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim xPosleft As Single = e.MarginBounds.Left
Dim yPos As Single = e.MarginBounds.Top
Dim xPosright As Single = e.MarginBounds.Right
Dim lineHeight As Single = mFont.GetHeight(e.Graphics)


Dim blackPen As New Pen(Color.Black, 1)
Dim i As Integer
MyCnn = New ADODB.Connection()
MyRs = New ADODB.Recordset()
StrCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=people.mdb"
MyCnn.Open(StrCnn)
MyRs.Open("Select * From test", MyCnn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic)
MyRs.MoveFirst()
For i = 0 To MyRs.RecordCount - 1
temp(i) = MyRs.Fields(0).Value.ToString
MyRs.MoveNext()
Next

Dim count As Integer = 0

Do
yPos += lineHeight
e.Graphics.DrawString(temp(count), mFont, Brushes.Black, xPosleft, yPos)
count += 1
Loop Until yPos >= e.MarginBounds.Bottom Or count = MyRs.RecordCount - 1
If count < MyRs.RecordCount - 1 Then
e.HasMorePages = True '要分页打印
Else
e.HasMorePages = False '打印结束
End If

End Sub

哪位高手帮帮忙,我已经困惑了好多天了。
...全文
255 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aruz 2004-12-21
  • 打赏
  • 举报
回复
maybelian(maybelian) ,太谢谢了,终于明白了,thank you啦
maybelian 2004-12-20
  • 打赏
  • 举报
回复
你的代码有很多问题:
1。在PrintDocument1_PrintPage你每次都要连接数据库,影响速度。实质上这段代码不应该放在printpage中,而应该放在打印开始之前
MyCnn = New ADODB.Connection()
MyRs = New ADODB.Recordset()
StrCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=people.mdb"
MyCnn.Open(StrCnn)
MyRs.Open("Select * From test", MyCnn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic)
MyRs.MoveFirst()
For i = 0 To MyRs.RecordCount - 1
temp(i) = MyRs.Fields(0).Value.ToString
MyRs.MoveNext()
Next
2。Dim count As Integer = 0这各语句也用得不对,这样在每次得PRINTPAGE事件中,都是从第一项开始打印,你可以将count定义为类变量并初始化为0,然后在printpage处理函数中使用count+=1,而不要使用DIM count as integer=0
aruz 2004-12-20
  • 打赏
  • 举报
回复
sz_lgp(longguoping),
这个我也考虑到了,但是一时没有好的方法解决,能否告诉我怎么解决这个指针的问题,谢谢了
sz_lgp 2004-12-20
  • 打赏
  • 举报
回复
给你一点提示:
你分页以后程序打印余下的数据,指针是不能少的,你上面的程序分页后指针又回到0,又重头开始开打。永运是第一页。

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧