请教 如果DocumentCompleted 在同一页面需要先执行Submit11的click,然后等待他执行完,在执行Submit22的click 处理顺序问题
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//应该第一个处理,等待第一个处理完毕,然后才处理第二个(这里LastUrl页面都是一样的,如果页面不一样很好处理!)
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit11");
buttonSubmit.InvokeMember("click");
}
//第二个处理
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit22");
buttonSubmit.InvokeMember("click");
}
}如果我加入控制值 LoadChangeDataNum = 0 ,也不行,因为一旦内部赋值,下面代码页满足条件,继续执行下面的代码 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//应该第一个处理,等待第一个处理完毕,然后才处理第二个
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl && LoadChangeDataNum == 0)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit11");
buttonSubmit.InvokeMember("click");
}
//应该第二个处理
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl && LoadChangeDataNum == 1)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit22");
buttonSubmit.InvokeMember("click");
}
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//应该第一个处理,等待第一个处理完毕,然后才处理第二个(这里LastUrl页面都是一样的,如果页面不一样很好处理!)
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit11");
buttonSubmit.InvokeMember("click");
}
//第二个处理
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit22");
buttonSubmit.InvokeMember("click");
}
}如果我加入控制值 LoadChangeDataNum = 0 ,也不行,因为一旦内部赋值,下面代码页满足条件,继续执行下面的代码 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//应该第一个处理,等待第一个处理完毕,然后才处理第二个
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl && LoadChangeDataNum == 0)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit11");
buttonSubmit.InvokeMember("click");
}
//应该第二个处理
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && webBrowser1.Url.ToString() == LastUrl && LoadChangeDataNum == 1)
{
HtmlElement buttonSubmit = (HtmlElement)this.webBrowser1.Document.GetElementById("Submit22");
buttonSubmit.InvokeMember("click");
}
}
呵呵。自己想了半天。,因为webBrowser1.ReadyState 是只读的,无法赋值。
加了一个Timer组件,在“应该第一个处理”位置启动Timer,然后再Timer_Click 里面赋值 LoadChangeDataNum == 1 解决了问题