【问题标题】:Execute buttons with one click一键执行按钮
【发布时间】:2013-02-21 11:34:50
【问题描述】:

我有一个简单的 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);

它有效,但在控制台中我发现 Button 2 执行了两次

提前致谢!

【问题讨论】:

标签: c# .net button click browser


【解决方案1】:

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

基本上你只需要在你的WebBrowser DocumentCompleted 方法中调用button2.PerformClick()。但是,如果你想确保 button1 被点击,你可以在 button1 Click 方法中设置一个 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.
}

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

【讨论】:

  • 感谢您的帮助,我已经尝试了 WebBrowser DocumentCompleted 方法中的“button2.PerformClick()”,如果我只有两个按钮,它就可以工作,但如果我有 3 个或更多按钮, DocumentCompleted 方法不是解决方案,因为我只需要单击第一个按钮,而其他按钮会一个一个地自动单击
  • 所以我在方法按钮X_Click 的最后一行添加:webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(button(X+1)_Click); 并在方法按钮X+1_Click 的第一行添加:webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(button(X+1)_Click); 是否正确?
  • 不,如果您需要点击多个按钮,请在 DocumentCompleted 方法中执行所有 Clicking。我现在会更新我的答案。
【解决方案2】:

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

您只需订阅一次。

【讨论】:

  • 订阅一次是什么意思?在 DocumentCompleted 的第一个声明中,我做了“+=”来创建监听器,但在第二个声明中我做了“-=”来停止监听器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多