我在C#Windows窗体上有一个WebBrowser控件,它获取了一些参数。由于某些Ajax内容,webbrowser多次提升DocumentCompleted。除了我填写表单字段中的一些值的网页(这是传递参数控制的意思)加载不是很快我有一个计时器,每2秒运行一次以尝试填充值。到目前为止这么好,但现在我有不同的值,我需要传递给表单,网站需要再次加载。 我在列表中有这些值,我使用foreach循环。问题是foreachloop太快,因此webbrowser控件只获取该列表的最后一个值。
我希望你们明白我的意思。你有什么建议/提示/技巧我应该做些什么来解决这个问题?
谢谢!
编辑:下面是foreach的代码,它在结束时触发Timer,然后经历加载页面,传递参数等过程......
foreach (string routeFrom in lstRoutesFrom)
{
string routeTo = lstRoutesTo[lstRoutesFrom.IndexOf(routeFrom)].ToString();
//Prepare Data...
this.requestAirportFrom = routeFrom;
this.requestAirportTo = routeTo;
string dd = "13";
string mm = "07";
string yyyy = "2012";
string date = dd + "/" + mm + "/" + yyyy;
this.requestDate = date;
this.globalStep = 0;
listAirline.Clear();
listArrAirports.Clear();
listArrTime.Clear();
listDepAirports.Clear();
listDepTime.Clear();
listFlightNumbers.Clear();
listFlightPrices.Clear();
btnTimer.Enabled = true;
}
答案 0 :(得分:1)
你的foreach不是'太快',它只是不正确。
foreach (string routeFrom in lstRoutesFrom) // this gets multiple 'routeFrom' values
{
//Prepare Data...
this.requestAirportFrom = routeFrom; // and now (over)write all to the same place
....
}
只有最后一个routeFrom
保存在 (1)this.requestAirportFrom
位置。
答案 1 :(得分:0)
基于您的问题:问题是foreachloop太快,以至于webbrowser控件只获取该列表的最后一个值。
WebBrowser Control具有DocumentCompleted Event,您可以使用它一次传递一个项目
请参阅MSDN
上的示例