I have a simple C # application that contains buttons and a web browser, each button execute a request and displays the result of the request on the web browser. And I use the results of a request in the next button.
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");
}
}
my question is to find method or way to perform the two buttons with a single click, but the second button, do not execute until the web browser is loaded.
in my first solution, I added in the first button :
webBrowser1.DocumentCompleted + = new WebBrowserDocumentCompletedEventHandler (Button2_Click);
but the second button excuted several times, so I added in the last line of the button 2:
webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler (Button2_Click);
it works, but in the console I find that Button 2 is execute twice
Thanks in advance!
You’re approaching this issue the wrong way. First you are not looking for a way to click two buttons. You are looking for a way to click one button and execute an operation if a condition is met.
Basically you just need to call
button2.PerformClick()in your WebBrowserDocumentCompletedmethod. If however you want to ensure that button1 was clicked, you can set a bool in button1 Click method and reset it in the button2 Click method.If you need to perform more than one button click in your document complete method after the first button click, you can add them to your
DocumentCompletedmethod like this:First subscribe normally.
Normally you can generate the method stub by pressing TAB after subscribing to the event. The method could be as follows:
I hope that answers your question 🙂