Questo può venire attraverso come incredibilmente stupido, ma non riesco a capire se:C evento Load Control blocca # browser Web con i genitori
- Sono un idiota
- ho frainteso qualcosa
- MS Web Browser controllo è bloccato
Preferisco pensare che sia quest'ultimo.
Ho un controllo Web Browser in un controllo utente WinForms. È stato aggiunto al controllo in fase di progettazione e, in teoria, nell'evento Load del controllo dovrebbe passare a Google.
Sembra semplice.
Tuttavia.
public partial class TVHost : UserControl
{
public TVHost()
{
InitializeComponent();
}
private void TVHost_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://google.co.uk");
}
}
Questo non funziona. Nessun errore, solo niente. L'inserimento di una linea di breakpoint/debug mi mostra che l'evento Load non viene nemmeno chiamato.
Ho deciso a questo punto di verificare che l'evento Load sia impostato correttamente nel file Designer.cs.
this.Load += new System.EventHandler(this.TVHost_Load);
Sembra legittimo.
Se rimuovo il controllo del browser Web dal modulo, viene generato l'evento di caricamento.
Non capisco questo un po ', come può un controllo impedire un metodo che lo utilizza da sparare in primo luogo?
Passando, ho trovato questo: http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d6e427b2-9cc9-4318-bb05-11363025e3f7/
TL; DR per il link è il seguente: "Load non funziona se si dispone di un browser web sulla forma che è impostato per Visible = true"
Quindi, sicuramente, se cambio la visibilità predefinita del browser su false, viene generato l'evento di caricamento del controllo. Posso aggirare il problema impostando la visibilità del browser nell'evento di caricamento.
private void TVHost_Load(object sender, EventArgs e)
{
webBrowser1.Visible = true;
webBrowser1.Navigate("http://google.co.uk");
}
Molto strano.
Mentre questa "correzione" funziona, la trovo incredibilmente hacky e mi chiedevo se qualcuno ha qualche spiegazione per questo comportamento?
Sorprendentemente ho trovato questo bug in MS Connect, rimasto 2005-http://connect.microsoft.com/VisualStudio/feedback/details/116535/when-adding-a-webbrowser-control-to-a-user-control-the-load-will-not-fire#
Controllare questo http://stackoverflow.com/questions/2220483/usercontrol-load-event-not-fired – V4Vendetta
Provato che @ V4Vendetta, non ha funzionato neanche. Grazie comunque. – KingCronus
Un po 'più Googling mi ha portato a trovare molti riferimenti a questo bug, non vedo correzioni migliori di quelle attuali di impostarlo su invisibile prima. * sadface * – KingCronus