我正在尝试标记一些复选框,然后使用webbrowser提交表单,我成功了,问题是我的程序变得无穷无尽,似乎提交的表单,然后我的表单在提交之前,再次提交并再次提交在被提交之前再次......再次....再次....无限地如此。我不明白为什么。
我意识到它发生在这一部分:
form.InvokeMember ("submit");
这是我的代码
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.mysite.com");
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.Text = e.Url.ToString() + " loaded";
webBrowser1.Document.GetElementById("check1").InvokeMember("CLICK");
webBrowser1.Document.GetElementById("check2").InvokeMember("CLICK");
webBrowser1.Document.GetElementById("check3").InvokeMember("CLICK");
webBrowser1.Document.GetElementById("check4").InvokeMember("CLICK");
webBrowser1.Document.GetElementById("check5").InvokeMember("CLICK");
foreach (HtmlElement form in webBrowser1.Document.Forms)
{
if (form.Name == "SearchForm")
{
form.InvokeMember("submit");
}
}
}
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
this.Text = "Navigating";
}
答案 0 :(得分:1)
嗯,你说任何时间你完成加载页面,你想提交搜索表单。因此,当提交完成后,它将完成加载页面...并且您将触发相同的事件。这是一个完全自然的循环。
您应该问自己要检测的条件,这意味着您应该在页面加载完成后提交表单。例如,仅是否在搜索框中没有内容时?或者根据URL进行更改?或者您可能只是想在提交表单之前取消“文档已完成”的事件处理程序?如果没有更多的背景,我们无法真正告诉你,但这就是你设定这种行为的原因。
答案 1 :(得分:0)
Victor,尝试使用不同的表单(* .aspx)进行提交操作。