本任务的内容
概要
Visual Basic.NET 应用程序中承载该 web 浏览器控件可以处理NewWindow2事件以捕获由脚本生成的window.open调用。但是,它不是立刻如何您的应用程序可以获得交给window.open的特征参数,以便在 web 浏览器主机可以调整窗口的大小正确的宽度和高度值。本文介绍如何获取新的宽度和高度的 web 浏览器控件以及如何相应地调整窗体大小。
要求
下表列出了推荐使用的硬件、软件、网络基础设施以及所需的 Service Pack:
-
Microsoft Visual Studio.NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 或更高版本
创建示例
本部分介绍如何承载 Visual Basic.NET 应用程序中的 web 浏览器控件、 如何处理NewWindow2事件的 web 浏览器控件中,以及如何处理WindowSetWidth和WindowSetHeight事件调整您的应用程序。
-
在 Visual Basic 中创建新的 Windows 应用程序,如下所示:
-
启动 Visual Studio.NET。
-
在文件菜单上,指向新建,然后单击项目。
-
在项目类型下单击Visual Basic 项目。在模板下单击Windows 应用程序。
-
-
工具箱中单击常规,用鼠标右键单击工具箱中,然后单击自定义工具箱。
-
COM 组件选项卡上,选择Microsoft Web 浏览器复选框,然后单击确定。
-
在工具箱中双击资源管理器窗口中。
-
向表单中添加一个按钮控件和一个文本框控件。
-
双击该按钮以在代码窗口中,查看该按钮的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 SubEnd 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 页面,然后单击按钮。请注意,应用程序的新实例中打开微软公司网站。根据您使用window.open调用传递功能调整窗体。
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
311284方法: 处理在 Visual Basic.NET 应用程序中的文档事件
259963如何: 获取宽度和高度提供给 Window.open 内侧 Visual C++ web 浏览器主机有关 web 浏览器控件中,以及这些方法的详细信息,属性和事件公开,请到以下网站:
Visual Basic 开发人员http://msdn2.microsoft.com/en-us/library/Aa752043.aspx的 web 浏览器控件: 引用有关为 Microsoft Internet Explorer 开发基于 Web 的解决方案的详细信息,请访问下面的 Microsoft 网站:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep