-2

ボタンとWebブラウザーを含む単純なC#アプリケーションがあります。各ボタンは要求を実行し、要求の結果をWebブラウザーに表示します。そして、次のボタンでリクエストの結果を使用します。

private void button1_Click(object sender, EventArgs e)
        {
webBrowser1.Navigate("http://www.test.com");
        }

private void button2_Click(object sender, EventArgs e)
        {
            if (webBrowser1.Document.GetElementById("tesxtbox1") != null)
            {
            HtmlElement txt1 = webBrowser1.Document.GetElementById("tesxtbox1");
            txt1.SetAttribute("value", "test");
            webBrowser1.Document.Forms[0].InvokeMember("submit");
            }
        }

私の質問は、シングルクリックで2つのボタンを実行する方法または方法を見つけることですが、2番目のボタンは、Webブラウザーがロードされるまで実行されません。私の最初のソリューションでは、最初のボタンに追加しました:

webBrowser1.DocumentCompleted + = new WebBrowserDocumentCompletedEventHandler (Button2_Click);

しかし、2番目のボタンが数回実行されたので、ボタン2の最後の行に追加しました。

webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler (Button2_Click);

動作しますが、コンソールでボタン2が2回実行されていることがわかります

前もって感謝します!

4

2 に答える 2

2

あなたはこの問題に間違った方法で取り組んでいます。まず、2つのボタンをクリックする方法を探していません。条件が満たされた場合に、1つのボタンをクリックして操作を実行する方法を探しています。

button2.PerformClick()基本的には、WebBrowserDocumentCompletedメソッドを呼び出すだけです。ただし、button1がクリックされたことを確認する場合は、button1 Clickメソッドでブール値を設定し、button2Clickメソッドでリセットできます。

DocumentCompleted最初のボタンクリックの後にドキュメント完了メソッドで複数のボタンクリックを実行する必要がある場合は、次のようにメソッドに追加できます。

まず、通常どおりにサブスクライブします。

webBrowser1.DocumentCompleted += Document_Completed;

TAB通常、イベントをサブスクライブした後にを押すと、メソッドスタブを生成できます。方法は次のようになります。

private void Document_Completed(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     //here you add the other buttons that must be clicked when document complete
     button1.PerformClick(); button2.PerformClick();//etc
     //you could even iterate all over the buttons on the form and click each of them if it meets a certain condtition.
}

私はそれがあなたの質問に答えることを願っています:)

于 2013-02-21T12:00:27.573 に答える
0

DocumentCompletedは、WebBrowserコントロールがドキュメントのダウンロードを終了するたびに実行されます。

購読する必要があるのは1回だけです。

于 2013-02-21T11:36:17.747 に答える