C# Web Browser Control blocks parent's Load event

c#, events, webbrowser-control, winforms

Solution

From the discussion in the Connect bug you linked to:

For now, if you want to get the Load event to fire, you can set the URL property of the WebBrowser control in the property grid. The URL can be anything you want, even about:blank if you don't want it to start with a page loaded.

So if you go into the designer and set the `WebBrowser`'s `Url` property to the string `about:blank` (which tells the `WebBrowser` to load an empty page), then your user control should start getting its `Load` event again.

Problem

This may come across as incredibly stupid, but I cannot figure out if: - I am an idiot - I have misunderstood something - The MS Web Browser control is bugged I prefer to think that it is the latter. I have a Web Browser control in a WinForms user control. It has been added to the control at design time, and in theory, in the Load event of the control it should navigate to Google. Seems straightforward. However. ``` public partial class TVHost : UserControl { public TVHost() { InitializeComponent(); } private void TVHost_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://google.co.uk"); } } ``` This doesn't work. No error, just nothing. Inserting a breakpoint/debug lines shows me that the Load event doesn't even get called. I decided at this point to check that the Load event is being set correctly in the Designer.cs file. ``` this.Load += new System.EventHandler(this.TVHost_Load); ``` Seems legit. If I remove the web browser control from the form, the load event fires. I don't understand this one bit, how can a control prevent a method which uses it from firing in the first place? Moving on, I found this: http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d6e427b2-9cc9-4318-bb05-11363025e3f7/ TL;DR for the link is as follows: "Load won't work if you have a webbrowser on the form which is set to Visible = true" So sure as hell, if I change the default visibility of the webbrowser to false, the load event of the control fires. I can work around the problem by setting the visibility of the browser in the load event. ``` private void TVHost_Load(object sender, EventArgs e) { webBrowser1.Visible = true; webBrowser1.Navigate("http://google.co.uk"); } ``` Very odd. Whilst this "fix" works, I find it incredibly hacky and was wondering if anybody has any explaination for this behaviour? Amazingly I have found this bug in MS Connect, left over from 2005 - http://connect.microsoft.com/VisualStudio/feedback/details/116535/when-adding-a-webbrowser-control-to-a-user-control-the-load-will-not-fire#

Original source

Related problems