.NET webbrowser - documentcompleted没有正确响应

时间:2011-01-10 16:30:26

标签: c# html internet-explorer browser

我这样做:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (webBrowser1.DocumentText.IndexOf("Negative Orders") != -1)
    {
        webBrowser1.Navigate(@"http://............somepage");

        while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
        {
            Application.DoEvents();
        }

        MessageBox.Show("finished loading");
    }
}
发生了一些非常奇怪的事情。它成功进入IF STATEMENT;但是,一旦它执行webBrowser.Navigate,它就会输入while,之后它就会返回。 根本不会执行消息框。

这里发生了什么?

2 个答案:

答案 0 :(得分:1)

听起来好像正在发生异常。尝试将整个事物放入try catch并在发生异常时中断

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    try
    {
        if (webBrowser1.DocumentText.IndexOf("Negative Orders") != -1)
        {
            webBrowser1.Navigate(@"http://............somepage");

            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }

            MessageBox.Show("finished loading");
        }
    }
    catch (Exception x)
    {
        System.Diagnostics.Debugger.Break();
    }
}

答案 1 :(得分:0)

我认为您的消息框未被调用,因为您的代码仍位于调用堆栈深处的Application.DoEvents();部分。它可能正等着您离开webBrowser1_DocumentCompleted方法来调用下一个DocumentCompleted处理程序,最后将ReadyState设置为Complete

我建议不要使用Application.DoEvents();,但特别不要使用webBrowser1_DocumentCompleted