【问题标题】:WebBrowser.Print() wait until complete. .NETWebBrowser.Print() 等到完成。 。网
【发布时间】:2011-01-29 00:41:54
【问题描述】:
我在 VB.NET 中使用 WebBrowser 控件并调用 Print() 方法。我正在使用 PDF 打印机打印出来,当 Print() 被调用时,它不会立即启动(它会等到它完成整个 Sub 或块的运行代码。
我需要确保我正在打印的文件也是完整的并继续使用该文件进行处理,因此,我想按需打印并获得操作完成时的一些状态。我已经尝试过使用 printDocument 和进程,但没有运气。
有人有什么想法吗?
【问题讨论】:
标签:
c#
.net
vb.net
printing
browser
【解决方案1】:
查看底层非托管 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
【解决方案2】:
最好的办法是掌握默认打印机的“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