2015-12-07 174 views
0

如何打印多个页面?在我的表格中,我有带相应标签的文本框。 (ID,名称,课程等),但问题是1页是不够显示所有文本框。我必须添加另一个页面来显示剩余的文本框及其标签。我尝试将e.hasmorepages设置为true,但第二页中显示的文本框与第一页中的文本框不一样。在vb.net中打印多个页面

这里是我的代码:

Private Sub printSisDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printSisDoc.PrintPage 

    Dim labelFont As New Font("Arial", 11, FontStyle.Bold) 
    Dim textFont As New Font("Arial", 11, FontStyle.Regular) 
    Dim headerFont As New Font("Arial", 12, FontStyle.Bold) 

    e.Graphics.DrawString(lblGrade.Text, headerFont, Brushes.Black, 650, 660) 
    e.Graphics.DrawString(grade11.Text, textFont, Brushes.Black, 660, 690) 
    e.Graphics.DrawString(underline.Text, labelFont, Brushes.Black, 643, 692) 
    e.Graphics.DrawString(grade12.Text, textFont, Brushes.Black, 660, 715) 
    e.Graphics.DrawString(grade13.Text, textFont, Brushes.Black, 660, 740) 
    e.Graphics.DrawString(grade14.Text, textFont, Brushes.Black, 660, 765) 
    e.Graphics.DrawString(grade15.Text, textFont, Brushes.Black, 660, 790) 
    e.Graphics.DrawString(grade16.Text, textFont, Brushes.Black, 660, 815) 
    e.Graphics.DrawString(grade17.Text, textFont, Brushes.Black, 660, 840) 
    e.Graphics.DrawString(grade18.Text, textFont, Brushes.Black, 660, 865) 
    e.Graphics.DrawString(grade19.Text, textFont, Brushes.Black, 660, 890) 
    e.Graphics.DrawString(grade20.Text, textFont, Brushes.Black, 0, 1500) 

    mPageNumber += 1 

    e.HasMorePages = (mPageNumber <= 2) 
End Sub 
+1

[http://stackoverflow.com/questions/16945172/printing-multiple-pages-with-printdocument](http://stackoverflow.com/questions/16945172/printing-multiple-pages-with- printdocument) –

回答

0

当你有多个页面,你需要确保你的单身PrintPage()方法一次为每个需要打印页面调用。每次调用该方法时,都需要知道当前页面是什么以及需要将哪些内容写入该页面。

你的e.HasMorePages变量是你如何让你的PrintDocument对象再次调用该方法。另外请记住,您的printSisDoc_PrintPage()方法是一个类的一部分。您需要在方法中可以使用的类中设置数据,以了解哪些页面是最新的以及要打印的内容。

Private Sub printSisDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printSisDoc.PrintPage 

    Dim labelFont As New Font("Arial", 11, FontStyle.Bold) 
    Dim textFont As New Font("Arial", 11, FontStyle.Regular) 
    Dim headerFont As New Font("Arial", 12, FontStyle.Bold) 

    Select mPageNumber 
    Case 1 
     e.Graphics.DrawString(lblGrade.Text, headerFont, Brushes.Black, 650, 660) 
     e.Graphics.DrawString(grade11.Text, textFont, Brushes.Black, 660, 690) 
     e.Graphics.DrawString(underline.Text, labelFont, Brushes.Black, 643, 692) 
     e.Graphics.DrawString(grade12.Text, textFont, Brushes.Black, 660, 715) 
     e.Graphics.DrawString(grade13.Text, textFont, Brushes.Black, 660, 740) 
     e.Graphics.DrawString(grade14.Text, textFont, Brushes.Black, 660, 765) 
     e.Graphics.DrawString(grade15.Text, textFont, Brushes.Black, 660, 790) 
     e.Graphics.DrawString(grade16.Text, textFont, Brushes.Black, 660, 815) 
     e.Graphics.DrawString(grade17.Text, textFont, Brushes.Black, 660, 840) 
     e.Graphics.DrawString(grade18.Text, textFont, Brushes.Black, 660, 865) 
     e.Graphics.DrawString(grade19.Text, textFont, Brushes.Black, 660, 890) 
     e.HasMorePages = True 

    Case 2 

     e.Graphics.DrawString(grade20.Text, textFont, Brushes.Black, 0, 400) 
     e.HasMorePages = False 

    End Select 

    mPageNumber += 1 

End Sub 
+0

嗨joel谢谢你的回答,但我有一个忙,你能告诉我一个例子,使用我的代码?谢谢你 – jane

+0

我加了一些代码。 –

+0

谢谢你!我非常感谢你的帮助:) – jane