【问题标题】:WinForms WebBrowser block Download c#WinForms WebBrowser 块下载 c#
【发布时间】:2015-10-21 13:11:50
【问题描述】:

我的 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;
}

【问题讨论】:

  • 有一个很好的答案here

标签: c# winforms download webbrowser-control


【解决方案1】:

如果这是您所做的唯一更改导致此错误,那么您可以尝试在关闭之前调用它:

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

注意:-=(不是 +=)

【讨论】:

  • 谢谢,成功了。我必须将其更改为if (webBrowser.ActiveXInstance != null) (webBrowser.ActiveXInstance as SHDocVw.ShellBrowserWindow).FileDownload -= browser_FileDownload;,以防不使用 webBrowser。
猜你喜欢
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多