DANS CETTE TÂCHE
Résumé
Les applications Visual Basic .NET qui héberge le contrôle WebBrowser peuvent gérer l’événement NewWindow2 pour intercepter un appel window.open qui est généré par le script. Toutefois, il n’est pas immédiatement évident de comment votre application peut obtenir les valeurs de largeur et de hauteur qui sont transmis à l’argument de fonctionnalités de window.open afin que l’hôte WebBrowser peut redimensionner la fenêtre correctement. Cet article explique comment faire pour obtenir les nouvelles largeur et la hauteur du contrôle WebBrowser et comment redimensionner votre formulaire en conséquence.
Configuration requise
La liste suivante indique le matériel, les logiciels, l’infrastructure réseau et les Service Packs recommandés dont vous avez besoin :
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 ou version ultérieure
Création de l’exemple
Cette section décrit comment héberger le contrôle WebBrowser dans une application Visual Basic .NET, comment gérer l’événement NewWindow2 du contrôle WebBrowser et comment gérer le WindowSetWidth et le WindowSetHeight des événements Redimensionnez votre application.
-
Créez une nouvelle application Windows dans Visual Basic comme suit :
-
Démarrez Visual Studio .NET.
-
Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
-
Sous Types de projets, cliquez sur Projets de Visual Basic. Sous modèles, cliquez sur Application Windows.
-
-
Dans la boîte à outils, cliquez sur Général, avec le bouton droit dans la boîte à outils, puis cliquez sur Personnaliser la boîte à outils.
-
Sous l’onglet Composants COM , activez la case à cocher de Navigateur Web Microsoft , puis cliquez sur OK.
-
Dans la boîte à outils, double-cliquez dans la fenêtre de l’Explorateur.
-
Ajoutez un contrôle Button et un contrôle TextBox à votre formulaire.
-
Double-cliquez sur le bouton pour afficher la mise en oeuvre de l’événement onClick du bouton dans la fenêtre de Code et ajoutez le code suivant :
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
Ce code vous permet d’accéder à l’URL que vous spécifiez dans la zone de texte.
-
Ajoutez le code suivant pour écrire la fonction gestionnaire pour 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
-
Ajoutez le code suivant pour écrire la fonction gestionnaire pour 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
-
Ajoutez le code suivant pour écrire la fonction gestionnaire pour 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
Exemple de Code complet
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
Vérifiez que tout fonctionne
-
Générez l’application.
-
Ouvrez le bloc-notes. Créer un nouveau fichier nommé Test.htm et ajoutez le code suivant :
<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>
-
Enregistrer Test.htm sur votre serveur Web.
-
Exécutez l’application.
-
Accédez à la page Test.htm, puis cliquez sur le bouton. Notez que le site Web d’entreprise de Microsoft s’ouvre dans une nouvelle instance de l’application. Le formulaire est redimensionné en fonction des fonctionnalités que vous avez passées avec l’appel à window.open.
Références
Pour plus d’informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
311284 Comment : gérer des événements de Document dans une Application .NET de Visual Basic
259963 faire : obtenir la largeur et la hauteur fourni à Window.open intérieur l’hôte WebBrowser de Visual C++Pour plus d’informations sur le contrôle WebBrowser, ainsi que les méthodes, les propriétés et les événements qu’il expose, consultez sur le site Web de Microsoft à l’adresse suivante :
Contrôle de WebBrowser : Référence pour les développeurs Visual Basichttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxPour plus d’informations sur le développement de solutions Web pour Microsoft Internet Explorer, visitez les sites Web de Microsoft à l’adresse suivante :
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep