I DEN HÄR UPPGIFTEN
Sammanfattning
Visual Basic .NET-program som är värdar för webbläsarkontrollen kan hantera händelsen NewWindow2 om du vill fånga en window.open samtal som skapas av skriptet. Det är dock inte omedelbart uppenbara hur programmet kan hämta värdena för bredd och höjd som skickas till argumentet funktioner för window.open så att WebBrowser-värd kan ändra storlek på fönstret på rätt sätt. Den här artikeln visar hur du skaffar den nya bredden och höjden för WebBrowser-kontrollen och ändras storleken på formuläret.
Krav
Följande lista ger en översikt över rekommenderad maskinvara, programvara, nätverksinfrastruktur och service Pack-uppdateringar som du behöver:
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 eller senare
Skapa provet
Det här avsnittet beskrivs hur värd för WebBrowser-kontrollen i Visual Basic .NET program, hur du vill hantera NewWindow2 -händelsen för kontrollen WebBrowser och sedan hur du vill hantera WindowSetWidth och WindowSetHeight händelser till Ändra storlek på programmet.
-
Skapa en ny Windows-program i Visual Basic på följande sätt:
-
Starta Visual Studio .NET.
-
Peka på Nyttpå Arkiv -menyn och sedan på projekt.
-
Klicka på Visual Basic-projektunder Projekttyper. Klicka på Windows-programunder mallar.
-
-
Klicka på Allmänti verktygslådan, högerklicka i verktygslådan och klicka sedan på Anpassa verktygslådan.
-
Markera kryssrutan Microsoft webbläsare på fliken COM-komponenter och klicka sedan på OK.
-
Dubbelklicka på den i Utforskaren i verktygslådan.
-
Lägga till en knapp kontroll och en textrutekontroll i formuläret.
-
Dubbelklicka på knappen om du vill visa genomförandet av händelsen onClick för knappen i kod-fönstret och Lägg till följande kod:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
Den här koden kan du gå till den URL som du anger i textrutan.
-
Lägg till följande kod för att skriva en hanterarfunktion för 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
-
Lägg till följande kod för att skriva en hanterarfunktion för 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
-
Lägg till följande kod för att skriva en hanterarfunktion för 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
Fullständig kodexempel
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
Kontrollera att den fungerar
-
Skapa programmet.
-
Öppna Anteckningar. Skapa en ny fil med beteckningen Test.htm och Lägg sedan till följande kod:
<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>
-
Spara Test.htm på webbservern.
-
Kör programmet.
-
Bläddra till sidan Test.htm och klicka sedan på knappen. Observera att Microsoft företagets webbplats öppnas i en ny instans av programmet. Formuläret ändras efter de funktioner som du skickade med anrop till window.open.
Referenser
För ytterligare information klickar du på artikelnumren nedan och läser artiklarna i Microsoft Knowledge Base:
311284 så här: hantera dokumenthändelser i ett program för Visual Basic .NET
259963 ta: hämta bredd och höjd som levereras till Window.open i Visual C++ WebBrowser-värdVeta mer om WebBrowser-kontrollen samt metoderna finns egenskaperna och händelserna som den visar på följande Microsoft-webbplats:
WebBrowser-kontrollen: Referens för Visual Basic-utvecklarehttp://msdn2.microsoft.com/en-us/library/Aa752043.aspxMer information om hur du utvecklar webbaserade lösningar för Microsoft Internet Explorer finns på följande Microsoft-webbplatser:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep