2

EventArgsイベントのをオーバーライドしたいと思いますWebBrowserDocumentCompleted。いつイベントを発生させるべきかわからないため、個人的なイベント ハンドラーを作成できませんDocumentDownloadCompleted。に追加したいデータはEventArgsですOriginalPageLink

ページをダウンロードしようとしていますが、ログイン ページにリダイレクトされます (1 回だけ)。ログイン方法を設定しましたが、元のページに再度移動したいのですが、元のページがありません。リンクするたびに追跡するグローバル変数を設定できますが、編集する方法はありますEventArgsか? も変更する必要がありますかWebBrowserDocumentCompletedEventHandler

私のコードは次のようになります

private void Submit_Click(object sender, EventArgs e)
{
    webBrowser1 = new WebBrowser();
    webBrowser1.AllowNavigation = true;           
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
    webBrowser1.Navigate(OriginalPageLink);
}

private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (e.Url.ToString().Contains("login.smlogin.ibb.ubs.net")) {
        loginWithWEBSSO(webBrowser1);
        webBrowser1.Navigate(***e.OriginalPageLink***);
    } else { 
        string mybody = webBrowser1.Document.Body.InnerText;
    }
}

ご提案いただきありがとうございます。

マルコ

4

2 に答える 2

0

WebBrowser.Navigatingある種のコレクションを使用してナビゲーション履歴を追跡するには、イベントをラッチするだけです。ログイン前のページに戻ります。イベントはNavigateナビゲートをトリガーし、以前の URL を削除するため、コレクションを管理するか、状態で管理されるアイテムを制限する必要があります。

于 2012-01-16T14:51:30.237 に答える
0

これにはプライベート文字列を使用できますが、これを作り直す必要があると思います。これまでのところ、次のシーケンスが表示されます。

1. Navigate to Original page.
2. Presented with login page.
3. Fill in the username / password and then submit.
4. Navigate to Original page.
5. Step 3's process fires a DocumentCompleted event - URL still "login" (loop).
6. Step 4's process fires a DocumentCompleted.

ステップのタイミングは保証されていないため、ステップ 4 で再度ログインを求められる場合があります。

私は常に最初にログイン ページに移動してログインすることで、この問題を回避しました。DocumentCompleted が発生したら、元のページに移動します。プライベート変数を使用して、これらすべてを追跡しました。最も単純なのは「private int _step=1;」です。次に、現在のステップに基づいて DocumentCompleted で何をすべきかを決定します。

于 2012-01-16T15:04:57.743 に答える