2010-03-18 254 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