我想打印列表框中的所有项目,如果还有更多项目,我希望它们能够在下一页继续。为此,每次撰写项目时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
我尝试在第一个e.hasmorepages
声明之外设置If
,但仍然没有运气。还有一个Do While
循环也没有用。是{I}跟踪我的记录的方式是pageRecordIndex
不对吗?这是什么问题?
在标记为重复之前,请留下评论,说明如何在我的网站上实施其他解决方案,因为我已经看过类似的帖子,解决方案对我不起作用。
答案 0 :(得分:0)
试试这样:
对于index = pageRecordIndex To ListBox1.Items.Count - 1