本任务的内容

概要

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事件调整您的应用程序。

  1. 在 Visual Basic 中创建新的 Windows 应用程序,如下所示:

    1. 启动 Visual Studio.NET。

    2. 在文件菜单上,指向新建,然后单击项目。

    3. 在项目类型下单击Visual Basic 项目。在模板下单击Windows 应用程序。

  2. 工具箱中单击常规,用鼠标右键单击工具箱中,然后单击自定义工具箱。

  3. COM 组件选项卡上,选择Microsoft Web 浏览器复选框,然后单击确定。

  4. 在工具箱中双击资源管理器窗口中。

  5. 向表单中添加一个按钮控件和一个文本框控件。

  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 SubEnd 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 页面,然后单击按钮。请注意,应用程序的新实例中打开微软公司网站。根据您使用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

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?
哪些因素影响了你的体验?

谢谢您的反馈意见!

×