0

いくつかのパラメーターを取得する C# Windows フォームに WebBrowser コントロールがあります。一部の Ajax コンテンツが原因で、Web ブラウザーは DocumentCompleted を複数回発生させます。それに加えて、フォーム フィールドにいくつかの値を入力する Web ページ (これは、コントロールにパラメーターを渡すことを意味します) の読み込みがあまり速くありません。2 秒ごとに値を入力しようとするタイマーがあります。これまでのところは問題ありませんが、フォームに渡す必要があるさまざまな値があり、Web サイトを再度読み込む必要があります。foreachループを使用して通過するリストにこれらの値があります。問題は、foreachloop が速すぎて、webbrowser コントロールがそのリストの最後の値しか取得できないことです。

皆さんが私の言いたいことを理解してくれることを願っています。これを修正するために何をすべきか、いくつかの推奨事項/ヒント/コツはありますか?

ありがとう!

編集: 以下は、最後にタイマーをトリガーする foreach のコードで、ページの読み込み、パラメーターの受け渡しなどのプロセスを経ます...

    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

   ....
}    

(1)の場所には最後だけrouteFromが保存されます。this.requestAirportFrom

于 2012-07-03T10:05:43.183 に答える
0

あなたの質問に基づいて:問題は、foreachloop が速すぎて、webbrowser コントロールがそのリストの最後の値しか取得できないことです。

WebBrowser コントロールには DocumentCompleted イベントがあり、これを利用して一度に 1 つの項目を渡すことができます

MSDNの例を参照してください

于 2012-07-03T09:50:13.860 に答える