等待webBrowser控件完全加载

时间:2013-10-22 15:24:36

标签: c# winforms webbrowser-control

我目前正在WinForm -

中使用webBrowser control
public Form1()
        {
            InitializeComponent();

            webBrowser1.AllowNavigation = true;
            webBrowser1.Navigate("http://foo.bar");        
        }

我有一个按钮控件,它接受webBrowser1.Url.OriginalString并将其设置为textBox -

// On button_Click
string requestResponse = webBrowser1.Url.OriginalString;
requestURLtextBox.Text = requestResponse;

但是,如果在webBrowser1有足够时间获取OriginalString文本之前单击该按钮,则会出现错误,因为该值尚不存在。

我尝试添加 -

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
      Thread.Sleep(1000);  
}

在button_Click事件中的上一个代码之前,这进入了一个无限循环。如何在webBrowser完成后检索OriginalString

1 个答案:

答案 0 :(得分:1)

这里有一些可能适合您的VB简单代码:

    If mbBusy Then Exit Function ' form level variable
    mbBusy = True
    Web.Navigate("http://.....htm")
    dtWebWait = Now().AddSeconds(timeoutSeconds)
    Do Until Web.ReadyState = WebBrowserReadyState.Complete
        Application.DoEvents()
        If Now() > dtWebWait Then
            MsgBox("navigate timeout - search form")
            Exit Function
        End If
        Threading.Thread.Sleep(250)
    Loop
    mbBusy = False