如何使用 ActiveReport SystemPrinter 知道打印任务已中止?

How to know the print task is aborted using ActiveReport SystemPrinter?

我是 ActiveReport 的新手。

我有一个使用 ActiveReport 2.0 的遗留 VB6 代码。 打印流程如下(代码为VB,ar的初始化未显示)

Dim ar as DDActiveReports2.ActiveReport

Dim aborted As Boolean
aborted = False
ar.Printer.StartJob("some job")
For i = 0 To ar.Pages.Count - 1
  ar.Printer.StartPage()
  If ar.Printer.Status = DDActiveReports2.JobStatus.ddJSAborted Then
    ar.Printer.AbortJob()
    aborted = True
    Exit For
  End If
  ar.Printer.PrintPage(ar.Pages(i), left, top, width, height)
  ar.Printer.EndPage()
Next
If Not Aborted Then
  ar.Printer.EndJob()
End If

我正在尝试将其迁移到 ActiveReport for .NET。经过一些研究,我发现这里最好的替换是 ActiveReports.SystemPrinter。迁移后的代码可能如下所示(未显示 ar 的初始化),

Dim ar As ActiveReports.Document.SectionDocument

Dim aborted As Boolean = False
Dim printer As New ActiveReports.SystemPrinter
printer.StartJob("some job")
For i = 0 To ar.Pages.Count - 1
  printer.StartPage()
  If ??? Then
    printer.AbortJob()
    aborted = True
    Exit For
  End If
  ar.Pages(i).Draw(printer.Graphics, New RectangleF(left, top, width, height))
  printer.EndPage()
Next
If Not Aborted Then
  printer.EndJob()
End If

但是,我在 ActiveReport2 中找不到 printer.Status,也无法知道打印中止状态 DDActiveReports2.JobStatus.ddJSAborted。

我不太确定 DDActiveReports2.JobStatus.ddJSAborted 到底是什么,我猜用户可能会在 Windows 打印任务 window 中取消打印。取消后,程序将取消所有剩余页面。

但是,这似乎不能在.NET 中完成?我错过了什么吗?

请帮忙

谢谢。

.NET 版本中的 SectionDocument class 具有 PrintAborted 事件处理程序。 这是一个代码示例:

进口GrapeCity.ActiveReports

导入GrapeCity.ActiveReports.文档

    Dim WithEvents my_document As SectionDocument
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    my_document = New SectionDocument()
    my_document.Load(ms)
    my_document.Print(False)
End Sub

Private Sub PrintAborted(sender As Object, e As EventArgs) Handles my_document.PrintAborted
    MsgBox("PrintAborted")
End Sub

请不要忘记将项目中的引用添加到 GrapeCity.ActiveReports.Extensibility.dll 和 GrapeCity.ActiveReports.Viewer.Win.dll

谢谢,