C sharp - Crear nuevo form con control axwebbroser

 
Vista:

Crear nuevo form con control axwebbroser

Publicado por Ernesto Aides (1 intervención) el 24/01/2010 18:02:07
Hola:

Tengo creada una aplicacion que usa el control axWebbrowser (no el control webbrowser que viene con .net 2.0) y hasta ahora, cuando una evento newwindow ocurre, tengo el siguiente codigo para crear un nuevo formulario, esto esta funcionand sin problemas:

private void axWebBrowser1_NewWindow2(object sender,
AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
Form1 frmWB;
frmWB = new Form1();
frmWB.axWebBrowser1.RegisterAsBrowser = true;
e.ppDisp = frmWB.axWebBrowser1.Application;
frmWB.Visible = true;
}

Lo que necesito ahcer ahora, es crear este nuevo formulario, pero en un nuevo trhead, para prevenir que, si se cierra el form "padre", el hijo continue abierto (tal como funciona I.Explorer cuando se abre una nueva ventana de exploracion.

Para crear un nuevo form en un thread separado, tengo el siguiente codigo, pero no se como ahcer para pasar via e.ppDisp la url a donde el nuevo form debe navegar:

private void axWebBrowser1_NewWindow3(object sender,
AxSHDocVw.DWebBrowserEvents2_NewWindow3Event e)
{
System.Threading.Thread t =
new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(ThreadProc));
t.SetApartmentState(ApartmentState.STA);
t.Start(e);
}

public static void ThreadProc(object e)
{
AxSHDocVw.DWebBrowserEvents2_NewWindow3Event f =
(AxSHDocVw.DWebBrowserEvents2_NewWindow3Event)e;

// EL PROBLEMA ES ACA, como usar las sentencias
// newForm.axWebBrowser1.RegisterAsBrowser = true;
// e.ppDisp = newForm.axWebBrowser1.Application;
// para que sean usadas en el nuevo form ?

Application.Run(new Form1());
}

Trate de hacer lo siguiente:

public static void ThreadProc(object e)
{
AxSHDocVw.DWebBrowserEvents2_NewWindow3Event f =
(AxSHDocVw.DWebBrowserEvents2_NewWindow3Event)e;
Form1 nF = new Form1(false);
nF.axWebBrowser1.RegisterAsBrowser = true;
f.ppDisp = nF.axWebBrowser1.Application;
nF.Visible = true;
Application.Run(nF);
}

Pero lo que resulta es:

a) el nuevo form es creado en un nuevo thread, pero no navega hacia ninguna url.
b) una ventana de Internet Explorer se abre con la pagina a donde deseaba navegar, pero necesito que sea en mi nuevo form (en mi aplicacion) y no en IE !

Cualquier ayuda sera muy agradecida !

Ernesto Aides
Ashdod - Israel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder