PrintDocument打印分页的问题
我的问题是怎样实现PrintDocument的分页打印?
以下一部分代码:(PrintDocument挂钩的事件是A4纸的20张长度,可以打印,但不能指定从M页到N页打印,化了好几天了都没有搞定,请教各位了。
Private PrintDataGrid As PrintDocument
Private PrintPriview As PrintPreviewDialog
Private PageSetup As PageSetupDialog
Public Sub Print()
Try
PrintDataGrid = New System.Drawing.Printing.PrintDocument
AddHandler PrintDataGrid.PrintPage, AddressOf Me.PrintDataGrid_PrintPage
PageSetup = New PageSetupDialog
PageSetup.PageSettings = PrintDataGrid.DefaultPageSettings
If PageSetup.ShowDialog() = DialogResult.Cancel Then
Exit Sub
End If
If PrintDataGrid.DefaultPageSettings.PaperSize.PaperName.ToString = "custom" Then
' PrintDataGrid.DefaultPageSettings.PaperSize.Kind = System.Drawing.Printing.PaperKind.A4
End If
allpages = 1
PageNumber = 1
index_Rows = 0
PrintDataGrid.DefaultPageSettings.PrinterSettings.FromPage = frompage//全局变量
PrintDataGrid.DefaultPageSettings.PrinterSettings.ToPage = topage//全局变量
Dim printerset As PrintDialog = New PrintDialog
printerset.Document = PrintDataGrid
printerset.ShowNetwork = True
printerset.AllowSelection = True
printerset.AllowSomePages = True
printerset.ShowDialog()
PrintPriview = New PrintPreviewDialog
PrintPriview.AutoScroll = True
PrintPriview.ControlBox = True
PrintPriview.AllowDrop = True
PrintPriview.FormBorderStyle = FormBorderStyle.SizableToolWindow
PrintPriview.Document = PrintDataGrid
PrintPriview.Size = New Size(600, 600)
PrintPriview.StartPosition = FormStartPosition.CenterScreen
PrintPriview.SetAutoScrollMargin(5, 5)
PrintPriview.ShowDialog()
Catch ex As Exception
MessageBox.Show("error:" & ex.ToString)
Finally
End Try
End Sub
Private Sub PrintDataGrid_PrintPage(ByVal sender As Object, ByVal ev_p As System.Drawing.Printing.PrintPageEventArgs)
On Error Resume Next
Dim DrawBrush As New SolidBrush(正文颜色)
Dim row_count As Integer '当前要打印的行
Dim myrow As DataRow
Dim 列宽(DataGridTable.Columns.Count - 1) As Single
Dim 列高(DataGridTable.Columns.Count - 1) As Single
ev = ev_p.Graphics
Dim x_unit_all As Single
Dim 最多行数 As Single
Dim mypoint As PointF
Dim 数据行数 As Integer = 0
.....................
end sub