0

我尝试使用VB.NET制作一个小程序。

当它打开时,它会显示一个网页和网页下方的进程栏。当用户点击网页中的链接时,进度条停止处理并显示一条You clicked a link消息。处理完成后,它会显示另一条消息:Thanks for helping me

我在 VB.NET 中编写了整个过程的代码,但是当我调试它时,它会显示一条消息:

“0”的值对“索引”无效。“索引”应介于 0 和 -1 之间。参数名称:索引

我的代码是:

 Public Class MyPage
    Private Sub MyPage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 1500
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        WebBrowser1.Document.Links(0).AttachEventHandler("onclick", AddressOf LinkClick)
    End Sub

    Sub LinkClick(ByVal sender As Object, ByVal e As System.EventArgs)
        Timer1.Start()
        MsgBox("You clicked the link", , "Clicked The link")
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ProgressBar1.Increment(2)
        If ProgressBar1.Value = 100 Then
            Timer1.Stop()
            ProgressBar1.Value = 0
            MsgBox("Thanks for help me", , "Thankssss!")
        End If
    End Sub
 End Class

我该如何解决这个问题?

4

1 回答 1

3

你盲目地假设页面总是有一个链接。错误的假设。使固定:

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    If WebBrowser1.Document.Links.Count > 0 Then
        WebBrowser1.Document.Links(0).AttachEventHandler("onclick", AddressOf LinkClick)
    End If
End Sub

或者考虑到用法,更理智:

    For Each link As HtmlElement In WebBrowser1.Document.Links
        link.AttachEventHandler("onclick", AddressOf LinkClick)
    Next
于 2013-09-16T10:34:53.110 回答