WinForms WebBrowser 块下载 c#

WinForms WebBrowser block Download c#

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

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

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

注意:-=(不是 +=)