1

webbrowserWinformアプリケーションにコントロールがあります。

以下の領域は、コードサンプルの分割に属しています。

リージョン1 現在ロードされているURLページは「http://MyWebsite.com」です。コードを使用して、Webページのリンク(「AboutUs」など)をクリックしています。このクリックにより、新しいURLページ( " http://MyWebsite.com/About_Us ")に移動します。ナビゲートイベントでは、この新しいURLを記録しています。

リージョン2 次に、この新しいURLのすべての要素を取得して、新しいリンクをクリックします。しかし、それを行う方法がわかりません。リージョン2では、新しいURLをwebbrowserオブジェクトにも割り当てています。しかし、インスタンスには何も反映されていません。webbrowser.url以前のURLパスがまだ含まれています。

ボタンクリックのコードは次のとおりです。

    private void Button1Click(object sender, EventArgs e)
    {
        // Region 1---------------------------------------------
        HtmlElementCollection links = webBrowser1.Document.GetElementsByTagName("A");
        foreach (HtmlElement link in links)
        {
            if (link.InnerText != null && link.InnerText.Equals("Click to view magic"))
            {
                link.InvokeMember("Click");
                break;
            }
        }
        // EndRegion---------------------------------------------


        // Region 2---------------------------------------------
        webBrowser1.Url = new Uri(_url.AbsoluteUri, UriKind.Absolute);
        webBrowser1.Navigate(_url); //New Edit

        links = webBrowser1.Document.GetElementsByTagName("input");
        foreach (HtmlElement link in links)
        {
            if ((link.GetAttribute("Name") == "BooHoo"))
            {
                link.InvokeMember("Click");
                break;
            }
        }
        // EndRegion---------------------------------------------
    }

    private void WebBrowser1Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        _url = e.Url;
    }

誰かが私がこれをするのを手伝ってくれますか?質問はあまり明確ではないかもしれません。さらに詳しい情報が必要な場合はお知らせください。ありがとう。

4

2 に答える 2

0

だからちょっとトリッキーだったり、油断したり。デバッグモードでプロパティ値を見ていました。F5後で、Visual Studio (デバッグを続行) を押してすべてのメソッドを実行するとwebbrowser、変更された値が表示されることに気付きました。

それが役に立てば幸い。

于 2013-03-07T13:18:26.740 に答える
0

WebBrowser は非同期で動作するため、Navigated イベントをサブスクライブする必要があります。

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { --ここで何かを行う.... }

于 2018-06-13T08:13:16.003 に答える