Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从.net 3.5 SP1中提供的wpf WebBrowser打印?_C#_Html_Wpf_Browser_Printing - Fatal编程技术网

C# 如何从.net 3.5 SP1中提供的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

我们目前正在WindowsFormsHost中的应用程序中使用winforms WebBrowser控件,并通过调用“WebBrowser.ShowPrintDialog()”进行打印。我们对此有一个问题,即对话框似乎不是模态的,如果以后尝试打印,则可以取消父窗口,从而导致问题

我在看新的wpf webbrowser控件,希望他们自己做类似的事情时能解决这个问题,但无法从中打印

我在网上发现有人在谈论这样做:

        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只会导致打印空页。