6 Stimmen

WebBrowser.Print() warten bis fertig. .NET

Ich verwende ein WebBrowser-Steuerelement in VB.NET und rufe die Print()-Methode auf. Ich drucke mit einem PDF-Drucker aus und wenn Print() aufgerufen wird, wird es nicht sofort gestartet (es wartet, bis es den Code für den gesamten Sub oder Block abgeschlossen hat.

Ich muss sicherstellen, dass die Datei, die ich drucke, vollständig ist und den Prozess mit dieser Datei fortsetzen, daher möchte ich bei Bedarf drucken und einen Status erhalten, wenn der Vorgang abgeschlossen ist. Ich habe versucht, printDocument und process zu verwenden, ohne Erfolg.

Hat jemand eine Idee?

5voto

Chris Haas Punkte 50077

Sehen Sie sich die PrintTemplateTeardown des zugrunde liegenden nicht verwalteten WebBrowser-Objekts. Manchmal wird dieses Ereignis mehrmals ausgelöst, aber ich hoffe, dass dies Sie in die richtige Richtung lenken wird. Sie müssen einen Verweis hinzufügen auf 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

1voto

jasondemon Punkte 11

Am besten ist es, wenn Sie Ihre 'printjobscollection' für Ihren Standarddrucker in den Griff bekommen und sicherstellen, dass jobcount = 0 ist.

wie diese in 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X