2013-02-21 125 views
-2

我有一个包含按钮和web浏览器的简单的C#应用​​中,每个按钮执行的请求,并显示在网络浏览器的请求的结果。我在下一个按钮中使用请求的结果。执行按钮与点击

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); 

,但第二个按钮excuted几次,所以我在按钮2的最后一行添加:

webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler (Button2_Click); 

它的工作原理,但在控制台中我发现,按钮2被提前执行两次

谢谢!

+0

重复的[执行与单一的点击两个按钮(http://stackoverflow.com/questions/14958655/execute-双按钮 - 单击) - 没有给你的第一个问题的答案对你有帮助吗? – 2013-02-21 11:37:32

+0

http://stackoverflow.com/questions/14958655/execute-two-buttons-with-single-click完全重复 – 2013-02-21 11:39:06

+1

没有:(,我添加了DocumentCompleted但每个按钮通过订阅执行一次rwice或你的意思更 – Abdel 2013-02-21 11:46:21

回答

2

您正在以错误的方式处理此问题。第一个你并不是在寻找来点击两个按钮。您正在寻找一种方法来单击一个按钮并在符合条件时执行操作。

基本上你只需要调用button2.PerformClick()在您的web浏览器DocumentCompleted方法。但是,如果要确保单击button1,则可以在button1中设置布尔值单击方法并将其重置为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. 
} 

我希望回答您的问题:)

+0

感谢您的帮助,我已经尝试了“按钮2。在WebBrowser DocumentCompleted方法中执行“PerformClick()”时,它的工作原理是,如果我有两个按钮,但如果我有3个或更多按钮,则DocumentCompleted方法不会是解决方案,因为我需要单击第一个按钮,其他按钮点击: 'webBrowser1.DocumentCompleted + = new WebBrowserDocumentCompletedEventHandler(button(X + 1)_Click);' 并在方法buttonX + 1_Click的第一行添加一个方法 – Abdel 2013-02-21 12:16:04

+0

所以我在方法的最后一行添加buttonX_Click我添加: 'webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler(button(X + 1)_Click);' 是否正确? – Abdel 2013-02-21 12:33:29

+0

不,如果您需要单击多个按钮,请执行DocumentCompleted方法中的所有单击操作。我现在更新我的答案。 – 2013-02-21 12:47:33

0

DocumentCompleted每次你WebBrowser控件完成下载的文件执行。

你只需要订阅一次。

+0

?在DocumentCompleted的第一个声明中,我做了“+ =”创建监听器,但是在第二个声明中我做了“ - =”来停止监听器 – Abdel 2013-02-21 11:49:00

+0

我需要帮助 – Abdel 2013-02-21 11:58:48