我想要让我的WebBrowser在加载页面的时候不显示图片
但我发现没有办法完成如

1:WebBrowser的Navigating的时候,
Document为null ,这里为要进行跳转,所以不可能在这里拦截
2:WebBrowser的Navigated的时候
Document有内容,但Document.Body为null,说明已经定向好了,要开始接收Body内容了,所以这里也没有办法
3:WebBrowser的DocumentCompleted的时候
Document有值,Body也有值,但遗憾的是这个是已经加载了页面了,你再去除也滑
应该Windows已经下载了图片
那应该怎么来实现呢?
谢谢

解决方案 »

  1.   

    可能比较底层一点
    http://www.codeproject.com/Articles/157329/Http-Monitor-for-Webbrowser-Control
      

  2.   

    WebBrowser先设置隐藏,加载完后再显示
      

  3.   

    问题就是没得地方改这个Document属性啊
      

  4.   

    我下载了,那个DLL用不了,好像
    我不用C++
      

  5.   

    只需要不显示图片的话,可以用DLCTL_DLIMAGES来控制。看下面的例子:// 添加引用C:\Program Files\Common Files\microsoft shared\VSTT\11.0\Microsoft.VisualStudio.OLE.Interop.dll
    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    using Microsoft.VisualStudio.OLE.Interop;[ComVisible(true)]
    public partial class Form1 : Form, IOleClientSite
    {
    public Form1()
    {
    InitializeComponent();
    } private const int DISPID_AMBIENT_DLCONTROL = -5512; private void Form1_Load(object sender, EventArgs e)
    {
    var obj = (IOleObject)webBrowser1.ActiveXInstance;
    obj.SetClientSite(this);
    var oc = (IOleControl)webBrowser1.ActiveXInstance;
    oc.OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL); webBrowser1.Navigate("http://www.163.com");
    } [DispId(DISPID_AMBIENT_DLCONTROL)]
    public int Idispatch_AmbiantDlControl_Invoke_Handler()
    {
    return 0;
    } public void SaveObject()
    {
    throw new NotImplementedException();
    }
    public void GetMoniker(uint dwAssign, uint dwWhichMoniker, out IMoniker ppmk)
    {
    throw new NotImplementedException();
    }
    public void GetContainer(out IOleContainer ppContainer)
    {
    throw new NotImplementedException();
    }
    public void ShowObject()
    {
    throw new NotImplementedException();
    }
    public void OnShowWindow(int fShow)
    {
    throw new NotImplementedException();
    }
    public void RequestNewObjectLayout()
    {
    throw new NotImplementedException();
    }
    }
      

  6.   

    我试了可以的。
    不过WebBrowser可以控制的部分有限,要想全面控制wb,可以用第三方封装的控件,比如csEXWB,它有下载管理控制,底层也是用的截获HTTP请求的方式,比自己写方便些。
    要想加快速速,还是用WebRequest自己去下载好些,WebBrowser毕竟是重量级的。