2016-08-17 42 views
0

私は7列と100sの行を持つデータグリッドを印刷しようとしています。 datのために私はビットマップを使用しました。しかし、55ページまでしか印刷できません。すなわち、1ページの印刷ページのみです。印刷するために複数のページを生成しません。私の悪い英語のために申し訳ありません。助けてください。100sの行を持つdatagridviewを印刷するには

事前にありがとう...ここ

は私のコードです:

Private bitmap As Bitmap 
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 

    '************************RESIZE DATAGRID VIEW TO FULL SIZE ********************** 
    Dim height As Integer = DataGridView1.Height 
    DataGridView1.Height = (DataGridView1.RowCount + 1) * DataGridView1.RowTemplate.Height 

    '************************CREATE A BITMAP AND DRAW THE DATAGRID VIEW ON IT ********************************** 
    bitmap = New Bitmap(Me.DataGridView1.Width, Me.DataGridView1.Height) 
    DataGridView1.DrawToBitmap(bitmap, New Rectangle(0, 0, Me.DataGridView1.Width, Me.DataGridView1.Height)) 

    '************************Resize datagrid view back to original size ******************************************** 
    DataGridView1.Height = height 

    '********************* show the print preview *********************************************************** 
    PrintPreviewDialog1.Document = PrintDocument1 

    PrintPreviewDialog1.PrintPreviewControl.Zoom = 1 

    PrintPreviewDialog1.ShowDialog() 

End Sub 

Private Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage 
    '********************************************* PRINT THE CONTENTS ************************************************************ 
    e.Graphics.DrawImage(bitmap, 0, 0) 

End Sub 
+0

次に例を示します。 https://code.msdn.microsoft.com/windowsdesktop/VBNet-Printing-Example-bc3b0176 – FloatingKiwi

+0

[別のDataGridViewプリンタ](http://web4.codeproject.com/Articles/18042/Another -DataGridView-Printer?msg = 3131642)を入力してください。 –

答えて

0

PrintPageEventArgs

HasMorePagesというプロパティがあり

。あなたは、datagridviewの高さからページの高さを引いて、別のページを印刷する必要があるかどうかを判断する必要があります。はい、それをtrueに設定すると、再びサブを実行します。

Private Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage 
    '********************************************* PRINT THE CONTENTS ************************************************************ 
    e.Graphics.DrawImage(bitmap, 0, 0) 

    Dim rectPrint As RectangleF = ev.PageSettings.PrintableArea 
    ' changed this to width if printing in landscape mode 
    If Me.DataGridView1.Height - rectPrint.Height > 0 Then e.HasMorePages = True 

End Sub 
関連する問題