跳到内容

Visual Basic .NET 网页编程

0% developed
来自维基教科书,开放的书籍,开放的世界

.Net Framework 类库中提供了网页浏览功能。在本文中,我们将探讨使用 Visual Basic .Net 加载和操作网页的技术。您将需要 Microsoft Visual Basic .Net 2005 来使用示例代码。

Web 浏览器对象

[编辑 | 编辑源代码]

让我们看看 Web 浏览器对象。此对象存在于 .NET Framework 类库中。它是框架 2.0 版中的新功能。如果您分发使用此对象的程序,目标系统必须安装 2.0 版(或更高版本)。

Public wbInCode As New WebBrowser

WebBrowser 对象不需要表单。您可以使用它以编程方式加载网页而无需显示它们。但是,您的程序会受到您为传统浏览器设置的配置设置的约束。例如,如果您允许弹出窗口,那么您加载到 wbInCode 对象中的任何网页都将有权启动弹出窗口。弹出窗口将在浏览器窗口中启动,这些窗口位于您的程序外部,即使您的 WebBrowser 对象没有在窗口中显示也是如此。

如果 JavaScript 方法在加载的页面上崩溃,并且您配置为在发生此类错误时停止,则网页浏览器控件也将停止。您的程序将挂起。简而言之,如果您计划在自动化环境中使用该控件,则需要仔细查看您的默认浏览器设置。否则,您会发现您的应用程序因有缺陷的网页而被阻止,并且您的显示器被弹出窗口淹没。

将网页加载到浏览器对象

[编辑 | 编辑源代码]

使用 WebBrowser 对象的 Navigate 方法加载网页

wbInCode.Navigate("http://www.usatoday.com")

等待加载操作完成

 While (wbInCode.IsBusy = true)
   ' Theoretically we shouldn’t need this, but experience says otherwise.
   ' If we just bang on the IsBusy() method we will use up a lot of CPU time
   '  and probably bog down the entire computer.
     Application.DoEvents()
 end

您还可以让对象在加载完成后通知您。DocumentCompleted 事件在页面加载后触发。此示例添加了一个事件处理程序方法,该方法将在页面加载完成后调用。

 Private Sub MyWebPagePrinter()
   Dim wbInCode As New WebBrowser   ' Create a WebBrowser instance. 
   ' Add an event handler. The AddHandler command ‘connects’ your method called
   ' ReadyToPrint() with the DocumentCompleted event. The DocumentCompleted event
   ' fires when your WebBrowser object finishes loading the web page.
   AddHandler wbInCode.DocumentCompleted, _ 
              New WebBrowserDocumentCompletedEventHandler (AddressOf ReadyToPrint)
   ' Set the Url property to load the document.
   wbInCode.Navigate("http://www.usatoday.com")
 End Sub
[编辑 | 编辑源代码]

我们还没有完成。以下是我们在前面代码中提到的 ReadyToPrint 方法。方法的名称是任意的,但参数列表是必需的。请注意,您不必显式调用此方法。它将在网页加载后由 WebBrowser 对象为您调用。

   Private Sub ReadyToPrint(ByVal sender As Object, _
                             ByVal e As WebBrowserDocumentCompletedEventArgs)
       ' Create a temporary copy of the web browser object.
       '  At the same time we will assign it a value by coercing the sender argument
       '  that was passed into this method.
       Dim webBrowserTmp As WebBrowser = CType(sender, WebBrowser)
       ' We know that the web page is fully loaded because this method is running.
       ' Therefore we don’t have to check if the WebBrowser object is still busy.
       ' It’s time to print…
       webBrowserTmp.Print()
   End Sub

访问存储在浏览器对象中的 HTML

[编辑 | 编辑源代码]

加载网站后,您可以访问底层的 HTML。文档对象是网页浏览器对象的属性。

           End If
           System.Console.WriteLine(tmp)
       Next
   End Sub
华夏公益教科书