文章編號: 311290 - 上次校閱: 2007年5月13日 - 版次: 4.1

如何: 寬度和高度從取得 window.Open() 內 WebBrowser 主機使用 Visual Basic.NET

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

裝載的 WebBrowser 控制項可以處理 NewWindow2 事件以攔截 window.open 呼叫所產生的指令碼的 Visual Basic.NET 應用程式。然而,不立即明顯應用程式要如何取得使 WebBrowser 主機可以調整視窗大小正確傳遞至 window.open功能 引數的寬度和高度值。本文將告訴您,如何取得新的寬度和高度在 WebBrowser 控制項,以及如何適當地調整您的表單。

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Visual Studio.NET
  • Microsoft 網際網路總管 5.5 Service Pack 2 (含) 以後版本

建立範例

本節說明如何 WebBrowser 控制項,在 Visual Basic.NET 應用程式中的裝載、 如何處理 NewWindow2 事件 WebBrowser] 控制項的以及然後如何處理 WindowSetWidthWindowSetHeight 事件調整您的應用程式的大小。
  1. 建立新的 Windows 應用程式在 Visual Basic 如下所示:
    1. 啟動 Visual Studio.NET。
    2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
    3. 按一下 [專案類型,] 下的 [Visual Basic 專案]。在 [範本,] 下按一下 [Windows 應用程式]。
  2. 在工具箱中按一下 [一般],在工具箱] 上按一下滑鼠右鍵,然後再按一下 [自訂工具箱]。
  3. COM 元件] 索引標籤上選取 [Microsoft Web 瀏覽器] 核取方塊,然後按一下 [[確定]
  4. 在工具箱中按兩下方案總管中視窗。
  5. 按鈕 控制項和 TextBox 控制項新增到表單。
  6. 按兩下按鈕以檢視 [程式碼] 視窗中的 [按鈕的 onClick 事件的實作然後再加入下列程式碼:
        Private Sub Button1_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
                AxWebBrowser1.Navigate(TextBox1.Text)
        End Sub
    						
    這個程式碼可讓您瀏覽至您在 [文字] 方塊中指定的 URL。
  7. 加入下列程式碼,以為 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
    					
  8. 加入下列程式碼,以為 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
    					
  9. 加入下列程式碼,以為 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
    					

完整的程式碼範例

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 Sub

End Class
				

請確認它可以運作

  1. 建置應用程式。
  2. 開啟 [記事本]。建立名為 Test.htm,新檔案,然後再加入下列程式碼:
    <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>
    					
  3. 在您的 Web 伺服器上儲存 Test.htm。
  4. 執行應用程式。
  5. 瀏覽至 Test.htm] 頁面,並再按一下按鈕]。 請注意 Microsoft 公司網站會在應用程式的新執行個體中開啟。表單與對 window.open 呼叫一起傳遞的功能是要調整。

?考

如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
311284? (http://support.microsoft.com/kb/311284/EN-US/ ) 如何: 處理 Visual Basic.NET 應用程式中的文件事件
259963? (http://support.microsoft.com/kb/259963/EN-US/ ) HOWTO: 取得寬度和高度提供給內部 Visual C++ WebBrowser 主機 window.Open
如 WebBrowser] 控制項,以及方法的相關的詳細資訊,內容以及它會公開的事件請參閱以下列 Microsoft 網站:
WebBrowser 控制項: Visual Basic 開發人員的參考
http://msdn2.microsoft.com/en-us/library/Aa752043.aspx (http://msdn2.microsoft.com/en-us/library/Aa752043.aspx)
如需有關 Microsoft Internet Explorer 開發 Web 為基礎的解決方案的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/ie/ (http://msdn.microsoft.com/ie/)

http://support.microsoft.com/iep (http://support.microsoft.com/iep)

這篇文章中的資訊適用於:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
關鍵字:?
kbmt kbhowtomaster KB311290 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:311290? (http://support.microsoft.com/kb/311290/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。