HtmlDocument web = webBrowser1.Document;
            HtmlElement btnSubmit = web.All["btnloginfree"]; //获取登录对应元素
            HtmlElement tbUserid = web.All["username"];     //获取用户名对应元素
            //HtmlElement tbStyle = webBrowser1.Document.All["style"];     //获取版本对应元素
            HtmlElement tbPasswd = web.All["password"]; //获取密码对应元素
            if (tbUserid == null || tbPasswd == null)
                return;
            tbUserid.SetAttribute("value", this.txtUserName.Text);     //给用户名赋值
            tbPasswd.SetAttribute("value", this.txtPassWord.Text);    //给密码赋值
            btnSubmit.InvokeMember("click"); //模拟点击登录按
            //Thread.Sleep(5000);     //延迟无效
            for (int i = 0; i < webBrowser1.Document.Links.Count; i++)
            {
                string str = webBrowser1.Document.Links[i].InnerHtml;
                if (str == "邮箱设置")
                {
                    webBrowser1.Document.Links[i].InvokeMember("click");
                }
            }
延迟句该换成什么呀????这样子好像会跳过,谁有好的办法可以解决呀

解决方案 »

  1.   

    通过使用Timer等方法设置延迟间隔,不使用Sleep方法停止当前线程的执行以求达到延迟目的
    WebBrowser控件也处于当前线程内,Sleep会同时暂停WebBrowser控件的运作。
      

  2.   

    你不如用回调的方式比较保险,延迟的话,根据网络状况设定时间不同,稳定性也不好。
    既然WB是你自己控制的,能够获取 complete/ready 的事件,在事件里去处理sleep后面的逻辑。
      

  3.   

      btnSubmit.InvokeMember("click"); 之后仍然会提交到新页面,仍然会触发webBrowser1_DocumentCompleted事件,在DocumentCompleted事件处理就行了
      

  4.   


    问题是下面不只“邮箱设置”一个操作下面还有好几个,而且就算我就执行一个操作,DocumentCompleted事件会不停的被触发,一直在刷
      

  5.   

    加标志,在DocumentCompleted判断。DocumentCompleted时,页面才被全部载入到webbrowser中。这时候,才应该开始解析页面。