本帖最后由 spishero 于 2010-04-19 20:45:01 编辑

解决方案 »

  1.   

    代码:
    private void Form1_Load(object sender, EventArgs e)
    {
        webBrowser1.Navigate("http://bbs.csdn.net");
    }private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        Console.WriteLine(e.Url);
    }输出
    about:blank
    http://community.csdn.net/WebNavigation/ForumContent.aspx
    http://community.csdn.net/WebNavigation/Navigation.aspx
    http://community.csdn.net/ASCX/NewHomePage/CFocusListBoard.htm
    http://community.csdn.net/ASCX/NewHomePage/TopBoard.htm
    http://community.csdn.net/ASCX/NewHomePage/BottomBoard.htm
    http://community.csdn.net/ASCX/NewHomePage/MiddleBoard.htm
    http://www.csdn.net/ggmm/dd333.htm
    http://community.csdn.net/HomePage.aspx
    http://community.csdn.net/明白没?打开一个页面可能多次触发DocumentCompleted事件,这时你需要判断一下url另外操作webBrowser最好统一使用javascript维护成本最低
    参考:WebBrowser执行脚本和调用外部方法。
      

  2.   

    谢谢大哥回答,在DocumentCompleted事件里,是有多次触发,在这里我也进行过处理if (e.Url != webBrowser.Document.Url) return;
    if (webBrowser.ReadyState=WebBrowserReadyState.Complete) return;
    这样的2次应该可以防止掉吧
      

  3.   

    上面少些了个!
    是:if (e.Url != webBrowser.Document.Url) return;
    if (webBrowser.ReadyState != WebBrowserReadyState.Complete) return;
      

  4.   

    HtmlElement hElement;            
    hElement = WebBrowser.Document.GetElementById("selectId");
    hElement.SetAttribute("selectedIndex", "1");http://topic.csdn.net/u/20070524/17/7cfe935f-dcbb-42ab-8a1e-6a01ee40b89d.html
      

  5.   

    将e.Url,webBrowser.Document.Url值输出(或者是断点),看看是不是你期望的
      

  6.   


    这个url值确实是我要的那个页面的url,是不是因为我用的webBrowser.Document.GetElementsByTagName("select")[0].RaiseEvent("onchange");
    导致页面在加载js重定向url时出现了问题
    因为调试的时候,这个方法也触发了DocumentCompleted事件忘大哥指点。。