我正在做一个程序,它转到一个链接+参数(字符串),编辑一些值并点击保存按钮。
这是我的代码中出现问题的部分:
for (int i = 0; i <= s; i++)
{
webBrowser1.Navigate("someUrl" + parameter[i]);
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
//some code to change some values and click on a save button...
timer1.Enabled = false;
}
问题是,它只循环一次,而不是循环一次。我正在使用计时器等待几秒钟来加载页面...
答案 0 :(得分:1)
您可以尝试使用WebBrowserDocumentCompletedEvenHandler
。
public void Init()
{
myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(NavigationCompleted);
}
public void Navigate()
{
myWebBrowser.Navigate(parameter[index++]);
}
private void NavigationCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//Do what you have to do with the document loaded in the browser
//...
//Submit your edit form (click save button)
//...
Navigate(); //Next!
}
答案 1 :(得分:1)
您的循环当然正在执行s
次,但timer1_Tick
肯定只执行一次。这是因为您在快速启动模式下反复启用timer1
,但只有在timer1_Tick
几秒钟后才会触发时,计时器才会被禁用一次。
答案 2 :(得分:0)
查看System.ComponentModel.BackgroundWorker
。它允许您非常轻松地在后台运行事物,并在工作完成时获得通知。可能是你所期待的。