我在 WinForms 应用程序上有一个 WebBrowser 控件,该应用程序正在加载转换为 HTML/CSS 的 XML。如果我只想在那里或在常规浏览器中查看它,看起来很漂亮。
当表单加载时,它应该导航到文件,然后当 OnDocumentCompleted 事件触发时,它应该在注册表中设置页眉、页脚和默认打印机名称,然后为用户指定的多个副本调用 Print()。
我已经通过调试器运行它,它在 OnDocumentCompleted 事件中调用 webBrowser.Print() 的次数正确。没有什么不应该是 null,WebBrowser 控件上的 Visible 是 true,AllowNavigation 也是如此。是的,打印机已打开并可通过网络访问。完全相同的代码在项目的其他地方工作,但在这里不工作。
还有什么可能导致这个地狱般的控件忽略我的打印命令?
理想情况下,我希望将整个内容隐藏在屏幕外,因为这是使用 Windows 调度程序运行的,用户永远不会看到它。不过,我已经读过控件需要可见,所以在我解决第一个问题之前,可以等待。
编辑:我的 OnDocumentCompleted 事件处理程序的最后两行将 DialogResult 设置为 OK 并关闭了表单。删除对 Close() 的调用让它打印,所以我猜它在表单关闭和 WebBrowser 控件被释放之前没有到达打印后台处理程序。
除了设置任意时间限制以在关闭之前等待之外,有什么方法可以判断何时完成打印?