我有一个打印出用户控件的silverlight应用程序。当用户按下打印时,将禁用打印按钮并显示状态消息“打印页面{编号}”。它工作正常,除非取消打印作业,EndPrint事件永远不会被触发。
有没有办法捕获打印取消事件?
答案 0 :(得分:1)
我有同样的问题,我不得不在成功打印或取消时将我的忙指示灯关闭。
如果您看到以下声明
printDocument.Print()
此方法不是对对话框的异步调用。执行此语句时,将打开打印对话框。除非n关闭该对话框(通过单击打印或取消),否则控件不会转到下一个语句。所以按照我解决问题的方式:
TurnBusyIndicator(ON)
printDocument.Print()
TurnBusyIndicator(OFF)
答案 1 :(得分:0)
大家好几个月前我使用silverlight 4打印api,在打印队列中捕获任何错误或取消我只是在我的打印过程中添加了以下行
PrintDocument pd = new PrintDocument();
....
pd.EndPrint += (s, args) =>
{
//Handle possilbe print errors or post print stuff here (wich you can see in args
};
同样如文档中所述,如果用户从打印对话框中取消打印操作,则不会发生EndPrint事件(在这种情况下,从未引发过BeginPrint)。 BeginPrint事件将始终发生在EndPrint事件(http://bit.ly/ho0kKE)也考虑到您正在使用的浏览器之间,支持与“它工作”之间存在很大差异:)
希望这会有所帮助
亚历