WebBrowser.Print()等到完成。 。净

时间:2010-03-18 13:22:09

标签: c# .net vb.net printing browser

我在VB.NET中使用WebBrowser控件并调用Print()方法。我正在使用PDF打印机进行打印,并且当调用Print()时,它不会立即启动(等待它完成运行整个Sub或块的代码。

我需要确保我正在打印的文件是完整的并继续处理这个文件,因此,我想按需打印并获得操作完成时的状态。我已经尝试过使用printDocument并且没有运气处理。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:5)

查看基础非托管WebBrowser对象的PrintTemplateTeardown事件。有时候这个事件会多次被触发,但希望这会指向正确的方向。您需要添加对Microsoft Internet Controls的引用。

Private Sub Print()
    AddHandler DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser).PrintTemplateTeardown, AddressOf PrintDone
    WebBrowser1.Print()
End Sub
Private Sub PrintDone(ByVal obj As Object)
    Trace.WriteLine("printed")
    RemoveHandler DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser).PrintTemplateTeardown, AddressOf PrintDone
End Sub

答案 1 :(得分:1)

您最好的办法是为您的默认打印机处理'printjobscollection',并确保jobcount = 0

在vb.net中这样:

    Dim intprint As Integer = Nothing

    retry2:
    intprint = GetPrintJobsCollection(printerinuse)
    If Not intprint = 0 Then
        System.Threading.Thread.Sleep(1000)
        GoTo retry2
    End If
    'do what you want to do after print completes here