只需单击一下即可执行按钮

时间:2013-02-21 11:34:50

标签: c# .net button click browser

我有一个简单的C#应用​​程序,其中包含按钮和Web浏览器,每个按钮执行一个请求并在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");
            }
        }

我的问题是找到只需单击即可执行两个按钮的方法或方法,但第二个按钮在加载Web浏览器之前不会执行。 在我的第一个解决方案中,我在第一个按钮中添加了:

webBrowser1.DocumentCompleted + = new WebBrowserDocumentCompletedEventHandler (Button2_Click);

但是第二个按钮多次出现,所以我在按钮2的最后一行添加了:

webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler (Button2_Click);

它可以工作,但在控制台中我发现按钮2执行了两次

提前致谢!

2 个答案:

答案 0 :(得分:2)

你以错误的方式接近这个问题。首先你不是在寻找来点击两个按钮。您正在寻找一种方法来单击一个按钮并在满足条件时执行操作。

基本上您只需要在WebBrowser button2.PerformClick()方法中调用DocumentCompleted即可。但是,如果要确保单击button1,可以在button1中设置bool单击方法并在button2 Click方法中重置它。

如果您需要在单击第一个按钮后单击文档完成方法中的多个按钮,则可以将它们添加到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.
}

我希望能回答你的问题:)

答案 1 :(得分:0)

每次WebBrowser控件完成下载文档时都会执行DocumentCompleted。

您只需订阅一次。