我这样做:
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
,之后它就会返回。 根本不会执行消息框。
这里发生了什么?
答案 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
。