我在 WinForms 应用程序上有一个 WebBrowser 控件,它正在加载转换为 HTML/CSS 的 XML。如果我只想在那里或在常规浏览器中查看它,看起来很漂亮。
当表单加载时,它应该导航到该文件,然后当 OnDocumentCompleted 事件触发时,它应该在注册表中设置页眉、页脚和默认打印机名称,然后为用户指定的任意份数调用 Print()。
我已通过调试器运行它,并且它在 OnDocumentCompleted 事件中调用 webBrowser.Print() 的次数正确。没有什么是不应该为 null 的,Visible 在 WebBrowser 控件上为 true,AllowNavigation 也是如此。是的,打印机已打开并可通过网络访问。完全相同的代码在项目的其他地方工作,但在这里不行。
还有什么可能导致这个地狱般的控件忽略我的打印命令?
理想情况下,我希望将整个内容隐藏在屏幕外,因为这意味着使用 Windows Scheduler 运行,并且用户永远不应该看到它。不过,我读到控件需要可见,所以在我解决第一个问题之前,可以等待。
EDIT:我的 OnDocumentCompleted 事件处理程序的最后两行将 DialogResult 设置为 OK 并关闭表单。删除对 Close() 的调用让它打印,所以我猜测在关闭表单和释放 WebBrowser 控件之前它没有到达打印后台处理程序。
除了设置关闭前等待的任意时间限制之外,有什么方法可以判断打印何时完成?
结果发现这是一个时间问题,表单在将文档发送到后台打印程序之前就被关闭了。我最终向窗体添加了一个计时器,将其设置为 30 秒,并使用 Tick() 事件关闭窗体。之前关闭表单的地方,现在只调用 closeTimer.Start()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)