WinForms WebBrowser块下载c#

时间:2015-10-21 13:11:50

标签: c# winforms download webbrowser-control

我的winform应用程序中有一个WebBrowser控件,用于显示pdf文件并根据用户的请求加载网页。如果不支持文件类型或网页启动下载,WebBrowser控件将要求保存,打开或取消该文件。我在这里找到了一个解决方案:https://social.msdn.microsoft.com/Forums/windows/en-US/325b1dde-806c-44d9-b420-2e4c929ae09d/webbrowser-control-how-to-disable-file-downloads?forum=winforms

此解决方案似乎有效,但在关闭应用程序时,我收到以下异常:InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.

是否有更好的方法来阻止WebBrowser控件的下载,或者我是否错误地实现了此解决方案?

我添加了对Microsoft Internet Controls(Interop.SHDocVw.dll)'的引用。并将此代码添加到我的WebBrowser控件:

(webBrowser.ActiveXInstance as SHDocVw.ShellBrowserWindow).FileDownload += browser_FileDownload;

private void browser_FileDownload(bool ActiveDocument, ref bool Cancel)
{
    if (!ActiveDocument)
        Cancel = true;
}

1 个答案:

答案 0 :(得分:2)

如果这是您造成此错误的唯一更改,那么您可以尝试在关闭前调用此方法:

(webBrowser.ActiveXInstance as SHDocVw.ShellBrowserWindow).FileDownload -= browser_FileDownload;

注意: - =(不是+ =)