单击即可执行两个按钮

时间:2013-02-19 13:25:02

标签: c# .net visual-studio-2010 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执行了两次

提前致谢!

5 个答案:

答案 0 :(得分:3)

你不应该认为执行第二个按钮点击。有DocumentCompleted事件你必须听,然后执行必要的代码。

答案 1 :(得分:3)

private void button3_Click(object sender, EventArgs e)
{
  webBrowser1.DocumentCompleted += (sender, e) => {button2_Click(sender, e);};
  button1_Click(sender, e);
}

将在button1_Click()触发完全加载文档后注册要执行的button2_Click方法。

答案 2 :(得分:1)

您可以通过button1_click方法进行以下调用。

button2_Click(sender, e);

答案 3 :(得分:1)

您应该添加一个事件,在文档完成加载后调用代码。

private void Form1_Load(object sender, EventArgs e)
{
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}    

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    button2_Click(sender, e);
}

答案 4 :(得分:-3)

您可以在网址中提供参数:

webBrowser1.Navigate("http://www.test.com?excuteSecondButton=Yes");

然后在第二页上检查是否给出了该参数:

PageLoad()
{
  if(Request.QueryString["executeSecondButton"].Equals("Yes"))
  {
    button2_Click(button2, new RoutedEventArgs());
  }
}