在foreach循环期间将参数传递给webbrowser控件不起作用

时间:2012-07-03 09:38:48

标签: c# foreach webbrowser-control

我在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;
    }

2 个答案:

答案 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

上的示例