2012-05-16 8 views
8

Esto puede ser percibida como increíblemente estúpida, pero no puedo averiguar si:C evento Load Control bloquea el navegador # Web de los padres

  • soy un idiota
  • he entendido algo
  • El navegador MS Web el control está obstruido

Prefiero pensar que es el último.

Tengo un control de navegador web en un control de usuario de WinForms. Se ha agregado al control en tiempo de diseño y, en teoría, en el evento Load del control, debería navegar a Google.

Parece sencillo.

Sin embargo.

public partial class TVHost : UserControl 
{ 
    public TVHost() 
    { 
     InitializeComponent(); 
    } 

    private void TVHost_Load(object sender, EventArgs e) 
    {  
     webBrowser1.Navigate("http://google.co.uk"); 
    } 
} 

Esto no funciona. Ningún error, solo nada. Al insertar un punto de interrupción/líneas de depuración, me muestra que el evento de carga ni siquiera se llama.

Decidí en este momento verificar que el evento Load se establezca correctamente en el archivo Designer.cs.

this.Load += new System.EventHandler(this.TVHost_Load); 

Seems legit.

Si elimino el control del navegador web del formulario, el evento de carga se dispara.

No lo entiendo, ¿cómo puede un control evitar que un método que lo utiliza para disparar en primer lugar?

Cambiando de tema, me encontré con esto: http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d6e427b2-9cc9-4318-bb05-11363025e3f7/

TL; DR para el enlace es el siguiente: "La carga no funcionará si usted tiene un navegador web en la forma que se establece en Visible = true"

Tan seguro como el infierno, si cambio la visibilidad predeterminada del navegador web a falso, el evento de carga del control se dispara. Puedo evitar el problema al configurar la visibilidad del navegador en el evento de carga.

private void TVHost_Load(object sender, EventArgs e) 
{ 
    webBrowser1.Visible = true; 
    webBrowser1.Navigate("http://google.co.uk"); 
} 

Muy extraño.

Si bien este "arreglo" funciona, me parece increíblemente hacky y me preguntaba si alguien tiene alguna explicación para este comportamiento?

Sorprendentemente he encontrado este error en MS Connect, que queda 2005-http://connect.microsoft.com/VisualStudio/feedback/details/116535/when-adding-a-webbrowser-control-to-a-user-control-the-load-will-not-fire#

+0

Revise esto http://stackoverflow.com/questions/2220483/usercontrol-load-event-not-fired – V4Vendetta

+0

Intenté que @ V4Vendetta, tampoco funcionó. Gracias de cualquier manera. – KingCronus

+0

Un poco más de búsqueda en Google me ha llevado a encontrar muchas referencias a este error, no veo mejores soluciones que mi actual de establecerlo como invisible primero. * sadface * – KingCronus

Respuesta

3

De lo expuesto en la Connect bug se enlazó a:

Por ahora, si usted quiere conseguir la carga evento para disparar, puede establecer la propiedad URL del control WebBrowser en la cuadrícula de propiedades. La URL puede ser cualquier cosa que desee, incluso sobre: ​​en blanco si no desea que comience con una página cargada.

Así que si usted entra en el diseñador y configurar Url propiedad del WebBrowser 's de la cadena about:blank (que le dice al WebBrowser para cargar una página en blanco), entonces el control de usuario debe empezar a recibir su caso Load nuevo.

+0

Muchas gracias, sobre: ​​en blanco hizo el truco. – KingCronus

Cuestiones relacionadas