我是要写自动填表,要等webBrowser打开完毕后才能获取元素并控制。。 怎么用代码控制,网页打开完毕后执行******(一段代码)? 我知道webBrowser有个DocumentCompleted事件。(在web浏览器控件中承载的文档圈闭加载完毕后发生) 但是怎样在一个按钮单击事件中用呢??? 有没有什么其他方法控制web控件加载文档完毕后执行代码?

解决方案 »

  1.   

    你在按钮单击事件中动态调用不行吗?private void webBrowser1_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)然后把你的要执行的写在调用这个之后
      

  2.   

    可以循环判断webBrowser1.IsBusy==false和webBrowser1.ReadyState==WebBrowserReadyState.Complete,但是有可能会误判
      

  3.   

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 

         Application.DoEvents(); 

    button1.performClick();
    }
      

  4.   

    C#的webBrowser控件,浏览完毕判断的真正的方法:1.在浏览一个新页面之前
      int loadingNumber = 0;
      int completeNumber = 0;2.开始浏览3.事件:Navigating
      loadingNumber++;4.事件:DocumentCompleted
      completeNumber++
      如果completeNumber == loadingNumber
      则本次加载结束,进行下一次加载。
    环境
    VS2008
    C# WinForm
    测试页面:
    http://www.163.com
    http://www.sohu.com
    http://www.qq.com
    http://www.csdn.com
    http://www.msdn.com
    鄙视下那些用 Application.DoEvents ,以及用 Navigated 做判断,以及 webBrowser1 属性的人,话说你们真做过测试了?