vb.net怎么设置打印预揽换页?[PrintPreview控件]

20040216 2008-01-21 09:08:32
代码 :
简化点吧:

for i = 1 to 100
e.Graphics.DrawString(i, Font1, Brushes.Black, x, y + i * (Font1height + 12))
next


想20条换一次页...但是不知道怎么写?
...全文
285 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgtsea 2008-04-24
  • 打赏
  • 举报
回复
怎么解决的啊?
20040216 2008-01-24
  • 打赏
  • 举报
回复
已经解决了。.谢谢
20040216 2008-01-24
  • 打赏
  • 举报
回复
对i改定义,为静态变量
20040216 2008-01-23
  • 打赏
  • 举报
回复
Dim i As Integer '页之和,重新调用的时候i自动加1。。翻页
i = i + 1
Dim t As Integer = 0 '当前页第几条?
Dim p As Integer '循环

Dim all As Integer = 100 '总条数
Dim PageNun As Integer = 20 '页面条数

Dim StartNum As Integer
Dim EndNum As Integer
StartNum = (i - 1) * PageNun + 1
EndNum = PageNun * i

If EndNum > all Then EndNum = all

For p = StartNum To EndNum
t = t + 1
e.Graphics.DrawString("Hello World!" & EndNum, New Font("宋体", 15), Brushes.Black, 100, 100 + t * 30)
Next

If EndNum >= all Then
Return False
Else
Return True
End If
改了种方式...

根据是多少页来调用FOR循环的开始和结尾,
最后判断。如果到结尾则Return False 否则换页..但是还是不断分页..停不下来。.是不是页面i没有传递过去?
20040216 2008-01-23
  • 打赏
  • 举报
回复
Dim i As Integer '页之和,重新调用的时候i自动加1。。翻页
Dim s As Integer '循环
Dim a As Integer = 0 '当页第几条 到10 时调用换页


i = i + 1
For s = 1 To 20
a = a + 1
e.Graphics.DrawString("Hello World!" & a, New Font("宋体", 15), Brushes.Black, a, s * 30)


If s > a + 10 * (i - 1) Or a > 10 Then

Return True
Else
Return False

End If
Next

20040216 2008-01-23
  • 打赏
  • 举报
回复
改写了部分代码


Dim i As Integer '页之和,重新调用的时候i自动加1。。翻页
Dim s As Integer '循环
Dim a As Integer = 0 '当页第几条 到10 时调用换页


i = i + 1
For s = 0 To 100
a = a + 1
e.Graphics.DrawString("Hello World!" & a, New Font("宋体", 15), Brushes.Black, a, s * 30)


If s > a + i * (10 - 1) Then

Return True
Else
Return False
End If
Next

但是还是一样的错误...是不是不能用到FOR循环中?

好象显示了第一条结果后自动停止了...
20040216 2008-01-23
  • 打赏
  • 举报
回复
重写了代码..高手看看

//调用的预览窗口
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

If Me.Draw(e) Then
e.HasMorePages = True '要分页打印
Else
e.HasMorePages = False '打印结束
End If
End Sub

//返回的值
Private Function Draw(ByVal e As System.Drawing.Printing.PrintPageEventArgs) As Boolean

For s = 1 To 100
a = a + 1
e.Graphics.DrawString("Hello World!" & a, New Font("宋体", 15), Brushes.Black, i, s * 30)

If a > 10 Then
Return True
Else
Return False
End If

Next
End Function
当s=10的时候返回Return True,也就是说10条换页,,,但是出现的结果却是不停的加页面...停不了....而且每页一样!

xtvj208 说过: 在程序中判断达到分页条件时,加上 e.HasMorePages=true,程序就可以分页.但要注意的是,当执行到这一语句时,程序会返回到该打印过程的第一条语句重新执行打印过程


我的好象是哦。.但是是什么错误呢?
allanli 2008-01-23
  • 打赏
  • 举报
回复
PrintOut(ByVal g As Graphics) As Boolean
函数有返回值的,只要你退出函数并返回一个True,
他就会换一页并且重新调用这个函数
20040216 2008-01-23
  • 打赏
  • 举报
回复
Private Sub PrintOut(ByVal g As Graphics)As Boolean
For s = 1 To 77

' 此处写要表达的内容

a=s

If a Mod 30 = 1 Then

e.HasMorePages = True
Else
e.HasMorePages = False
End If
Next
End Sub

这样可以吗?但是好象会不断的出现N页..而不是结果 3页啊
xtvj208 2008-01-23
  • 打赏
  • 举报
回复
分页的语句是:e.HasMorePages=true.反之,页结束时其值为False.
在程序中判断达到分页条件时,加上 e.HasMorePages=true,程序就可以分页.但要注意的是,当执行到这一语句时,程序会返回到该打印过程的第一条语句重新执行打印过程.
20040216 2008-01-21
  • 打赏
  • 举报
回复
能给个实例给我吗?

保存到哪里?然后递归的换页属性怎么设置?>
loveme1204 2008-01-21
  • 打赏
  • 举报
回复
每写20条数据以后把图片保存,然后在重新读取,重新画数据。用递归。

16,554

社区成员

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

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