裝載的 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] 控制項的以及然後如何處理
WindowSetWidth 和
WindowSetHeight 事件調整您的應用程式的大小。
- 建立新的 Windows 應用程式在 Visual Basic 如下所示:
- 啟動 Visual Studio.NET。
- 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
- 按一下 [專案類型,] 下的 [Visual Basic 專案]。在 [範本,] 下按一下 [Windows 應用程式]。
- 在工具箱中按一下 [一般],在工具箱] 上按一下滑鼠右鍵,然後再按一下 [自訂工具箱]。
- 在 COM 元件] 索引標籤上選取 [Microsoft Web 瀏覽器] 核取方塊,然後按一下 [[確定]。
- 在工具箱中按兩下方案總管中視窗。
- 將 按鈕 控制項和 TextBox 控制項新增到表單。
- 按兩下按鈕以檢視 [程式碼] 視窗中的 [按鈕的 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。 - 加入下列程式碼,以為 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
- 加入下列程式碼,以為 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
- 加入下列程式碼,以為 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
請確認它可以運作
- 建置應用程式。
- 開啟 [記事本]。建立名為 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>
- 在您的 Web 伺服器上儲存 Test.htm。
- 執行應用程式。
- 瀏覽至 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 網站:
如需有關 Microsoft Internet Explorer 開發 Web 為基礎的解決方案的詳細資訊,請造訪下列 Microsoft 網站: