2016-08-17 4 views
0

Я пытаюсь напечатать datagrid, который имеет 7 столбцов и 100 строк. Для того, что я использовал растровое изображение. Но он печатает только до 55 строк, т. Е. Распечатывает только страницу с одной страницей, она не создает несколько страниц для печати. Извините за мой плохой английский. Пожалуйста помоги.Как распечатать datagridview, имеющее 100 строк строк

Thanx заранее ..

Вот мой код:

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, и он снова запустит 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) 

    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 
Смежные вопросы