Click here to Skip to main content
15,888,521 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Please see the following code:

C#
private void Form1_Load(object sender, EventArgs e)
        {

            geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);

            geckoWebBrowser1.Navigate(url);

        }

private void PDF_Click(object sender, EventArgs e)
        {
           
            var item1 = geckoWebBrowser1.Document.GetElementById("DynamicGrid");

                htmlelem = item1.InnerHtml;
        }


I want to call the event PDF_Click automatically after completing the Form1_Load event.

Is it possible ?

Then please give me a suggestion.
Posted
Updated 12-Dec-14 1:56am
v2
Comments
Sanket Saxena 12-Dec-14 7:47am    
Why calling click event just call GetDOM() on your page load.
Richard Deeming 12-Dec-14 8:26am    

Hi,

Why you're trying to simulate button click event if only function it is doing is to call GetDOM() method? Isn't simpler to call that method directly from Form's Load event? Try this:

C#
private void Form1_Load(object sender, EventArgs e)
{
    geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);
    geckoWebBrowser1.Navigate(url);

    GetDOM(); // <-- this should be enough
}


[Update]
I think that I understand now what you're trying to do. I assume that you want to call PDF_Click after DOCUMENT WERE LOADED. Am I right?
In this case you should call PDF_Click or whatever method you want inside this method:
C#
geckoWebBrowser1_DocumentCompleted(object sender, EventArgs e)


Form_Load event is executed after form is created and initialized, but befeore it is Shown on screen. In that method you're assigning DocumentCompleted event handler to geckoWebBrowser component. So if you want to process loaded document, i.e. print it or save it or else, you should do that actions after DocumentWas loaded.
Let me know if I'm right?

Cheers!
 
Share this answer
 
v3
Comments
sachi Dash 12-Dec-14 8:04am    
No it is not right. See the question again. I have improved it.
Marcin Kozub 12-Dec-14 8:21am    
I've updated my answer.
sachi Dash 12-Dec-14 8:59am    
Yes you are right now. I want to loading this webpage then I want to get DOM from this webpage. Try to help me.
DamithSL 12-Dec-14 9:04am    
check answer 6 [^]
Marcin Kozub 12-Dec-14 9:12am    
Yes, I saw that just after I refreshed page. I've update my answer just after OP made his comment. Its possible that we post/update answers in the same time.
C#
private void Form1_Load(object sender, EventArgs e)
        {

            geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);

            geckoWebBrowser1.Navigate(url);

        }

private void PDF_Click(object sender, EventArgs e)
        {

             ProcessPDF();
        }

private void ProcessPDF()
        {
                var item1 = geckoWebBrowser1.Document.GetElementById("DynamicGrid");

                htmlelem = item1.InnerHtml;
        }
public void geckoWebBrowser1_DocumentCompleted(object sender, EventArgs e)
        {
              // web browser document loading completed, now you can generate the pdf
              ProcessPDF();
        }
 
Share this answer
 
v3
Comments
Marcin Kozub 12-Dec-14 9:36am    
+5 for a tie ;)
Bảo Trung 12-Dec-14 22:30pm    
yep, simple solutio
sachi Dash 14-Dec-14 0:51am    
It doesn't work for me. Click event is not allowed here. Try to understand at first need to loading windows form then my event will call automatically that I need actually. If you write ProcessPDF()in geckoWebBrowser1_DocumentCompleted event then it is not wright. Because When geckoWebBrowser1_DocumentCompleted event is calling in that time Form Loading is completed.
Simply add below line in end of page load event
C#
PDF_Click(new object(),new EventArgs());
 
Share this answer
 
Comments
sachi Dash 12-Dec-14 7:31am    
Where I need to put this code ? Please keep in mind at first need to load windows form then PDF_Click will occurred.
Mr. Mahesh Patel 12-Dec-14 7:42am    
private void Form1_Load(object sender, EventArgs e)
{

geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);

geckoWebBrowser1.Navigate(url);
PDF_Click(new object(),new EventArgs());
}
sachi Dash 12-Dec-14 8:00am    
No It is wrong ! When I call PDF_Click(new object(),new EventArgs()), in that time windows form loading is not completed. I have improved my code. See the question agein.
Mr. Mahesh Patel 12-Dec-14 8:03am    
you can call button click from java script in "Unload" event of form.
This will occurs after load complete.

See my second answer.
Simply you need to take the advantage of Form1_Shown event which will fired just after the form load:

C#
private void Form1_Load(object sender, EventArgs e)
       {
           // Call the Click event of PDF button.
           PDF.PerformClick();
       }

private void Form1_Shown(object sender, EventArgs e)
       {
          var item1 = geckoWebBrowser1.Document.GetElementById("DynamicGrid");

          htmlelem = item1.InnerHtml;
       }


Hope it helps :)
 
Share this answer
 
v3
Comments
sachi Dash 12-Dec-14 8:13am    
No it doesn't work. Please keep in mind at first need to load windows form then PDF_Click will occurred. When you are putting PDF.PerformClick(), this time windows form loading doesn't completed.
Sanket Saxena 12-Dec-14 8:26am    
Check my updated solution and use Form1_Shown event
sachi Dash 12-Dec-14 9:13am    
Actually I have used firstly Form_shown and was worked for default WebBrowser but it is not worked for geckoWebBrowser.
C#
private void Form1_Load(object sender, EventArgs e)
        {
             geckoWebBrowser1.DocumentCompleted += new EventHandler(geckoWebBrowser1_DocumentCompleted);
 
            geckoWebBrowser1.Navigate(url);
 Thread t = new Thread(new ThreadStart()=>{
PDF_Click(new object(), new EventArgs())
});
t.Start();
        }
 
private void PDF_Click(object sender, EventArgs e)
        {
           
            var item1 = geckoWebBrowser1.Document.GetElementById("DynamicGrid");
 
                htmlelem = item1.InnerHtml;
        }
 
Share this answer
 
v2
Comments
sachi Dash 12-Dec-14 9:03am    
giving error !
CHill60 12-Dec-14 11:53am    
Which one of your many answers should be taken? Don't just keep posting solutions - use the "improve solution" link to amend your original if necessary
C#
private void geckoWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {

while(e.Url != geckoWebBrowser1.Url)
{
Application.DoEvent();
Application.DoEvent();
Application.DoEvent();
}
PDF_Click(new object(), new EventArgs());
}
 
Share this answer
 
JavaScript
<script type="text/javascript">
     function fncsave()
     {
        document.getElementById('<%= PDF_Click.ClientID %>').click();
     }

     windows.onunload = fncsave;
</script>
HTML
But remember that this will be infinite loop if you are not handling properly this function
 
Share this answer
 
v2
Comments
Sanket Saxena 12-Dec-14 8:08am    
Mahesh OP is talking about Windows Form not Web Form :)
Mr. Mahesh Patel 12-Dec-14 8:09am    
They can use thread. Please see my next answer for windows.
By the way the word "InnerHTML" mentioned in question is used in web.
sachi Dash 12-Dec-14 8:16am    
@Mr. Mahesh Patel .... I am not using web. I am using geckoWebBrowser.
Mr. Mahesh Patel 12-Dec-14 8:25am    
See Solution Number 5 if it is helpful to you.
If not then try to found your geckoWebBrowser's url load complete event and call your button click event in it.

private void geckoWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {

while(e.Url != geckoWebBrowser1.Url)
{
Application.DoEvent();
Application.DoEvent();
Application.DoEvent();
}
PDF_Click(new object(), new EventArgs());
}

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900