0

我在 C# Windows 窗体上有一个 WebBrowser 控件,它有一些参数。由于某些 Ajax 内容,网络浏览器会多次引发 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;
    }
4

2 回答 2

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位置。

于 2012-07-03T10:05:43.183 回答
0

根据您的问题:问题在于 foreachloop 太快,以至于 webbrowser 控件只能获取该列表的最后一个值。

WebBrowser 控件具有 DocumentCompleted 事件,您可以使用它一次传递一项

请参阅MSDN上的示例

于 2012-07-03T09:50:13.860 回答