EN ESTA TAREA
Resumen
Aplicaciones de Visual Basic .NET que alojan el control WebBrowser pueden controlar el evento NewWindow2 para detectar una llamada window.open generado por la secuencia de comandos. Sin embargo, no resulta inmediatamente obvio cómo su aplicación puede obtener los valores de ancho y alto que se pasan al argumento características de window.open para que el host de WebBrowser puede cambiar el tamaño de la ventana correctamente. En este artículo se muestra cómo obtener el nuevo ancho y el alto del control WebBrowser y cómo cambiar el tamaño del formulario según corresponda.
Requisitos
En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 o posterior
Crear el ejemplo
Esta sección describe cómo hospedar el control WebBrowser en una aplicación de Visual Basic .NET, cómo controlar el evento NewWindow2 del control WebBrowser y, a continuación, cómo controlar el WindowSetWidth y los eventos WindowSetHeight a cambiar el tamaño de la aplicación.
-
Cree una nueva aplicación Windows en Visual Basic como sigue:
-
Inicie Visual Studio. NET.
-
En el menú archivo, elija nuevo y, a continuación, haga clic en proyecto.
-
En Tipos de proyecto, elija Proyectos de Visual Basic. En plantillas, haga clic en Aplicación para Windows.
-
-
En el cuadro de herramientas, haga clic en General, pulse el botón derecho en el cuadro de herramientas y, a continuación, haga clic en Personalizar cuadro de herramientas.
-
En la ficha Componentes COM , seleccione la casilla de verificación Explorador Web de Microsoft y, a continuación, haga clic en Aceptar.
-
En el cuadro de herramientas, haga doble clic en la ventana del explorador.
-
Agregue un control Button y un control TextBox al formulario.
-
Haga doble clic en el botón para ver la implementación del evento onClick del botón en la ventana de código y, a continuación, agregue el código siguiente:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
Este código le permite navegar a la dirección URL que especifique en el cuadro de texto.
-
Agregue el código siguiente para escribir la función de controlador de NewWindow2:
Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True End Sub
-
Agregue el código siguiente para escribir la función de controlador para WindowSetHeight:
Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub
-
Agregue el código siguiente para escribir la función de controlador para WindowSetWidth:
Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End Sub
Ejemplo de código completo
Public Class Form1 Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code " 'Omitted#End Region Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 'MessageBox.Show(AxWebBrowser1.Height & ":" & AxWebBrowser1.Width) 'MessageBox.Show(doc.body.innerHTML) Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True 'frmWB.AxWebBrowser1.Navigate2("about:blank") e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True 'MessageBox.Show(frmWB.AxWebBrowser1.Height & ":" & frmWB.AxWebBrowser1.Width) End Sub Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight 'MessageBox.Show("In SetHeight" & Me.Height & ":" & e.height) Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth 'MessageBox.Show("In SetWidth" & Me.Width & ":" & e.width) Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End SubEnd Class
Comprobar que funciona
-
Generar la aplicación.
-
Abra el Bloc de notas. Cree un nuevo archivo denominado Test.htm y, a continuación, agregue el código siguiente:
<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><TITLE></TITLE><script>function openWin(){var win;win = window.open("http://www.microsoft.com","blah","width=600, height=600");}</script></HEAD><BODY><button onClick=openWin()>Open Window</button></BODY></HTML>
-
Guardar Test.htm en el servidor Web.
-
Ejecute la aplicación.
-
Vaya a la página Test.htm y, a continuación, haga clic en el botón. Observe que el sitio Web corporativo de Microsoft se abre en una nueva instancia de la aplicación. El formulario cambia de tamaño según las características que pasan con la llamada a window.open.
Referencias
Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
311284 Cómo: controlar eventos de documento en una aplicación de Visual Basic .NET
259963 HOWTO: obtener el ancho y alto proporcionado a Window.open dentro del Host de WebBrowser de Visual C++Para obtener más información acerca del control WebBrowser, así como los métodos, las propiedades y los eventos que expone, consulte el siguiente sitio Web de Microsoft:
Control WebBrowser: Referencia para desarrolladores de Visual Basichttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxPara obtener más información acerca de cómo desarrollar soluciones basadas en Web para Microsoft Internet Explorer, visite los siguientes sitios Web de Microsoft:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep