我已经在加载转换为HTML/CSS的XML的WinForms应用程序上拥有WebBrowser控件。看起来很美,如果我只想在那里或在一个普通的浏览器中查看它。WebBrowser控件将不会从C#打印
当窗体加载时,它应该导航到文件,然后当OnDocumentCompleted事件触发时,它应该在注册表中设置页眉,页脚和默认打印机名称,然后调用Print()用户已指定。
我已经通过调试器运行了它,它在OnDocumentCompleted事件中调用了webBrowser.Print()正确的次数。 Nothing不应该是null,WebBrowser控件上的Visible也是如此,AllowNavigation也是如此。是的,打印机已打开并可通过网络访问。完全相同的代码在项目的其他地方工作,但不在这里。
还有什么可能导致这个地狱般的控制忽略我的打印命令?
理想情况下,我希望整个事情都隐藏在屏幕外,因为这意味着使用Windows Scheduler运行,并且用户永远不应该看到它。我已经读过,控制需要可见,但是,直到我解决这个第一个问题时,可以等待。
编辑:我的OnDocumentCompleted事件处理程序的最后两行将DialogResult设置为OK并关闭了窗体。删除对Close()的调用让它打印出来,所以我猜测它在表单关闭和WebBrowser控件处理之前没有进入打印假脱机程序。
只是设置一个任意的时间限制等待关闭之前的等待,有什么办法来告诉它什么时候完成打印?
这取决于作业到达假脱机程序的时间,假定您不需要处理大型作业并且打印系统可用性很高。如果你必须这样做,你可以把一个线程睡30,然后关闭窗体。根据打印作业状态进行更高级别的控制,以保证打印作业。 – Yuan 2011-05-03 21:24:38