【发布时间】:2017-08-24 21:57:27
【问题描述】:
我想打印列表框中的所有项目,如果还有更多项目,我希望它们在下一页继续。为此,每次写入一个项目时,pageRecordIndex 增加 1,如果 pageRecordIndex 不等于列表框中的项目数,则 e.HasMorePages 设置为 True,但一旦第一页已满 其余项目不在下一页上打印。
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
PrintPreviewDialog1.ShowDialog()
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim pageRecordIndex = 0
Dim index As Integer
Dim mem As String
Dim yOffset As Integer = 10
If pageRecordIndex < ListBox1.Items.Count Then
For index = 0 To ListBox1.Items.Count - 1
mem = ListBox1.Items(index)
e.Graphics.DrawString(mem,
Me.Font,
Brushes.Black,
10,
yOffset)
pageRecordIndex = pageRecordIndex + 1
yOffset += 20
Next
If pageRecordIndex = ListBox1.Items.Count Then
e.HasMorePages = False
Exit Sub
Else
e.HasMorePages = True
End If
End If
End Sub
我尝试在第一个If 语句之外设置e.hasmorepages,但仍然没有运气。也做了一个Do While 循环,但没有奏效。我通过pageRecordIndex 跟踪记录的方式不对吗?这里有什么问题?
在标记为重复之前,请发表评论,说明我如何在我的上实施其他解决方案,因为我看过类似的帖子,但这些解决方案对我不起作用。
【问题讨论】:
-
这与你的last question 有什么不同,last question 本身就是一个骗子?
-
您将其标记为重复,但其他帖子的解决方案不起作用@Plutonix
-
这篇文章和上一篇文章有同样的问题——你的 For/Loop 从每页的零开始。原始帖子中链接的两个帖子都充分涵盖了该问题。它与
e.HasMorePages无关,它与索引有关。请阅读How to Ask 并采取tour -
所以我尝试设置 index = pageRecordIndex 但它正在做同样的事情。可以不举个例子吗
-
你能不研究已经制作好的例子并专注于循环索引器吗?您上面的代码是对其中一个骗子的苍白且有缺陷的翻译。答案 both 依赖于声明的变量 outside print 方法,该方法跟踪最后一页离开的位置.
标签: .net vb.net visual-studio