2011-12-12 127 views
1

我正在從VB5轉換,並試圖獲得相當於VB.NET中的printer.NewPage。 我的代碼如下,但它只是在單個頁面上打印兩行。 程序打印兩頁計算結果(數組等),它不讀取和打印文件。 如何獲得第二頁?打印多個頁面

Private Sub PrintGeneralReport() 

    Dim PrintPreviewSelected As Boolean = True 

    'Set the doc to print 
    Dim pDoc As New PrintDocument 
    pDoc.PrintController = New StandardPrintController 'turns off the printing page x of y dialog 

    'Get the printer to use 
    If Me.PrintDialog1.ShowDialog() = DialogResult.OK Then 
     pDoc.PrinterSettings.PrinterName = Me.PrintDialog1.PrinterSettings.PrinterName 
     'pDoc.DefaultPageSettings.Margins = New Margins(75, 50, 50, 50) 
     pDoc.DefaultPageSettings.Margins = New Margins(40, 10, 10, 10) 
     pDoc.OriginAtMargins = True 

    Else 
     pDoc = Nothing 
     Exit Sub 
    End If 

    ' Install the PrintPage event handler. 
    AddHandler pDoc.PrintPage, AddressOf PrintGenReport 

    If PrintPreviewSelected Then 
     ''print preview 
     PrintPreviewDialog1.Document = pDoc 
     PrintPreviewDialog1.UseAntiAlias = True 
     PrintPreviewDialog1.WindowState = FormWindowState.Maximized 
     PrintPreviewDialog1.ShowDialog() 
    Else 

     'just print 
     pDoc.Print() 
    End If 

    RemoveHandler pDoc.PrintPage, AddressOf PrintGenReport 

End Sub 

Private Sub PrintGenReport(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) 

    Dim fnt10 As Font = New Font("Courier New", 10, FontStyle.Regular) 
    e.Graphics.DrawString("Page 1", fnt10, Brushes.Black, 20, 100) 
    'ROARK1.Print_GeneralReportRK(Me, e) 
    e.HasMorePages = True 
    e.Graphics.DrawString("Page 2", fnt10, Brushes.Black, 20, 200) 
    'ROARK1.Print_MemberActions(e) 
    e.HasMorePages = False 
End Sub 
+2

給你的班級添加一個PageNumber變量。在BeginPrint事件中將其初始化爲0,並在PrintPage事件中增加它。現在您可以使用Select語句來確定要打印的內容。 –

+0

@HansPassant。謝謝。我不理解的是,.hasmorepages動作再次調用打印頁面。 – Graham

回答

0

試試這個:

Private PageNum As Integer = 1 

Private Sub PrintGenReport(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) 
    Dim fnt10 As Font = New Font("Courier New", 10, FontStyle.Regular) 
    e.Graphics.DrawString("Page " & PageNum.ToString(), fnt10, Brushes.Black, 20, 100 * PageNum) 

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

注意PageNum變量在類級別定義。您還應該在PrintGeneralReport()方法中添加一行,以便在每個打印作業開始時將其重新設置爲1

+0

這個問題很古老,但它出現在搜索一個用作參考/重複的問題中,我認爲它可以使用答案。 –