2010-03-18 10 views
5

Używam formantu WebBrowser w VB.NET i wywołuję metodę Print(). Drukuję za pomocą drukarki PDF i gdy jest wywoływana funkcja Print(), nie jest ona natychmiast uruchamiana (oczekuje na zakończenie kodu dla całego Sub lub bloku.)WebBrowser.Print() Czekaj aż do ukończenia. .NET

Muszę się upewnić, że plik Jestem drukowanie też jest zakończone i kontynuuj proces z tym plikiem, dlatego chciałbym wydrukować na żądanie i uzyskać pewien status, gdy operacja jest zakończona .Próbowałem usign printDocument i proces bez powodzenia.Nie mam żadnych pomysłów?

Odpowiedz

5

Sprawdź wydarzenie PrintTemplateTeardown bazowego obiektu niezarządzanego WebBrowser, czasami zdarzenie jest uruchamiane wiele razy, ale mam nadzieję, że to wskaże Ci dobry kierunek. Musisz dodać odniesienie do 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

Najprościej jest, aby uchwyt na swoim 'printjobscollection' dla domyślnej drukarki i upewnij się, że jobcount = 0

tak w 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 
Powiązane problemy