2010-03-18 128 views
5

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

我需要确保文件打印太完整,并继续处理这个文件,因此,我想打印的需求,并获得一些什么时候操作完成状态。我已尝试使用printDocument,并没有运气的过程。

任何有什么想法?

回答

5

查看底层非托管WebBrowser对象的PrintTemplateTeardown事件。有时该事件被多次触发,但希望这会指出您在r ight方向。您需要添加对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

最好的办法是让你的 '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