无法在webbrowser控件中在运行时设置Url属性

时间:2013-02-28 14:50:06

标签: c# winforms webbrowser-control

我的Winform应用程序中有webbrowser控件。

以下区域属于代码分区样本。

区域1 加载的当前网址页面为“http://MyWebsite.com”。我正在使用代码点击网页中的链接(说“关于我们”)。点击此按钮将转到新的网址页面(“http://MyWebsite.com/About_Us”)。在导航活动中,我正在录制这个新网址。

区域2 现在我想获取这个新网址的所有元素,然后点击一个新链接。但不知道该怎么做。在区域2中,我还将新URL分配给webbrowser对象。但事实并没有反映出来。 webbrowser.url仍包含上一个网址路径。

我有以下按钮点击代码:

    private void Button1Click(object sender, EventArgs e)
    {
        // Region 1---------------------------------------------
        HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A");
        foreach (HtmlElement link in links)
        {
            if (link.InnerText != null && link.InnerText.Equals("Click to view magic"))
            {
                link.InvokeMember("Click");
                break;
            }
        }
        // EndRegion---------------------------------------------


        // Region 2---------------------------------------------
        webBrowser1.Url = new Uri(_url.AbsoluteUri, UriKind.Absolute);
        webBrowser1.Navigate(_url); //New Edit

        links = webBrowser1.Document.GetElementsByTagName("input");
        foreach (HtmlElement link in links)
        {
            if ((link.GetAttribute("Name") == "BooHoo"))
            {
                link.InvokeMember("Click");
                break;
            }
        }
        // EndRegion---------------------------------------------
    }

    private void WebBrowser1Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        _url = e.Url;
    }

任何人都可以帮助我这样做。问题可能不是很清楚。如果您需要任何进一步的细节,请告诉我。感谢。

2 个答案:

答案 0 :(得分:0)

所以这有点棘手,否则我就不小心了。我在调试模式下观察属性值。后来我注意到,在Visual Studio中按F5(继续调试)并运行所有方法后,webbrowser显示更改的值。

希望它有所帮助。

答案 1 :(得分:0)

您需要订阅Navigated事件,因为WebBrowser异步工作。

private void webBrowser1_Navigated(object sender,WebBrowserNavigatedEventArgs e)         {              - 做点什么......         }