C# 如何从.net 3.5 SP1中提供的wpf WebBrowser打印?
我们目前正在WindowsFormsHost中的应用程序中使用winforms WebBrowser控件,并通过调用“WebBrowser.ShowPrintDialog()”进行打印。我们对此有一个问题,即对话框似乎不是模态的,如果以后尝试打印,则可以取消父窗口,从而导致问题 我在看新的wpf webbrowser控件,希望他们自己做类似的事情时能解决这个问题,但无法从中打印 我在网上发现有人在谈论这样做:C# 如何从.net 3.5 SP1中提供的wpf WebBrowser打印?,c#,html,wpf,browser,printing,C#,Html,Wpf,Browser,Printing,我们目前正在WindowsFormsHost中的应用程序中使用winforms WebBrowser控件,并通过调用“WebBrowser.ShowPrintDialog()”进行打印。我们对此有一个问题,即对话框似乎不是模态的,如果以后尝试打印,则可以取消父窗口,从而导致问题 我在看新的wpf webbrowser控件,希望他们自己做类似的事情时能解决这个问题,但无法从中打印 我在网上发现有人在谈论这样做: PrintDialog printDialog = new Print
PrintDialog printDialog = new PrintDialog();
printDialog.PrintDocument(((IDocumentPaginatorSource)webBrowser.Document).DocumentPaginator, "My App");
但这会引发异常,因为WebBrowser.Document不支持IDocumentPaginatorSource接口
是否有任何方法可以从wpf web浏览器控件打印
谢谢我正在使用它,它可以工作:
mshtml.IHTMLDocument2 doc = webBrowser.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print", true, null);
谢谢,成功了。不幸的是,即使打印对话框仍然存在,我仍然无法与启动打印的UI交互(并关闭)。你有这个问题吗?关于打印对话框关闭时如何获取事件,有什么想法吗?我不知道,但我很确定打印对话框是从非托管代码启动的,因此它可能需要更多的工作来侦听类似事件。我恨你们两个,使用语句在哪里,你是如何实例化你的webbrowser的?@MartinClemensBloch我再也没有原始的源代码了,但是webbrowser是一个来自Windows窗体的控件(它与其他WinForms控件一样被实例化),我认为当你引用mshtml.dll作为COM组件时,mshtml.IHTMLDocument2是可用的。是的,我找到了,不过谢谢:)它没用——它打印的是空页,但我现在用WPF打印。我认为,对于表单和WPF webbrowser,都需要实际拥有窗口。在代码库中实例化webbrowser只会导致打印空页。