Diese stoßen können so unglaublich dumm, aber ich kann nicht herausfinden, wenn:C# Web Browser Control blockiert Eltern Load-Ereignis
- Ich bin ein Idiot
- ich etwas
- Die MS Web Browser falsch verstanden Steuerung ist abgehört
Ich bevorzuge zu denken, dass es das letztere ist.
Ich habe ein Webbrowser-Steuerelement in einem WinForms-Benutzersteuerelement. Es wurde dem Steuerelement zur Entwurfszeit hinzugefügt, und theoretisch sollte es im Load-Ereignis des Steuerelements zu Google navigieren.
Scheint einfach.
Jedoch.
public partial class TVHost : UserControl
{
public TVHost()
{
InitializeComponent();
}
private void TVHost_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://google.co.uk");
}
}
Dies funktioniert nicht. Kein Fehler, nur nichts. Das Einfügen einer Haltepunkt-/Debugzeile zeigt mir, dass das Load-Ereignis nicht einmal aufgerufen wird.
Ich entschied mich an dieser Stelle zu überprüfen, dass das Load-Ereignis in der Designer.cs-Datei korrekt festgelegt ist.
this.Load += new System.EventHandler(this.TVHost_Load);
Scheint echt.
Wenn ich das Webbrowser-Steuerelement aus dem Formular entfernen, wird das Load-Ereignis ausgelöst.
Ich verstehe dieses eine Bit nicht, wie kann eine Kontrolle eine Methode verhindern, die sie von der Zündung überhaupt verwendet?
Umzug auf, fand ich diese: http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d6e427b2-9cc9-4318-bb05-11363025e3f7/
TL; DR für den Link lautet wie folgt: „Laden wird nicht funktionieren, wenn Sie einen Web-Browser auf dem Formular haben, die auf Sichtbar gesetzt = true“
So sicher wie die Hölle, wenn ich die Standardsichtbarkeit des Webbrowsers auf false ändern, wird das Load-Ereignis des Steuerelements ausgelöst. Ich kann das Problem umgehen, indem ich die Sichtbarkeit des Browsers im Load-Ereignis festlege.
private void TVHost_Load(object sender, EventArgs e)
{
webBrowser1.Visible = true;
webBrowser1.Navigate("http://google.co.uk");
}
Sehr merkwürdig.
Während diese "Reparatur" funktioniert, finde ich es unglaublich hacky und fragte mich, ob jemand eine Erklärung für dieses Verhalten hat?
Erstaunlicherweise habe ich diesen Fehler in MS Connect, fand von 2005 übrig bleiben - http://connect.microsoft.com/VisualStudio/feedback/details/116535/when-adding-a-webbrowser-control-to-a-user-control-the-load-will-not-fire#
Überprüfen Sie diese http://stackoverflow.com/questions/2220483/usercontrol-load-event-not-fired – V4Vendetta
Versucht, dass @ V4Vendetta, auch nicht funktioniert. Danke trotzdem. – KingCronus
Ein bisschen mehr Googeln hat dazu geführt, dass ich viele Verweise auf diesen Bug gefunden habe. Ich sehe keine besseren Fixes als meinen jetzigen, indem ich ihn zuerst auf "unsichtbar" setze. * sadface * – KingCronus