在VB.NET中调用函数两次

在VB.NET中调用函数两次,vb.net,function,scroll,Vb.net,Function,Scroll,我有一个函数被调用了两次,我不知道该怎么做 这是当我按下WebBrowser上的输入按钮时调用的代码: Private Sub WebBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted Document = sender.Document A

我有一个函数被调用了两次,我不知道该怎么做

这是当我按下WebBrowser上的输入按钮时调用的代码:

Private Sub WebBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted

    Document = sender.Document
    AddHandler Document.Click, New HtmlElementEventHandler(AddressOf Document_Click)

End Sub

Private Sub Document_Click(sender As Object, e As HtmlElementEventArgs)

    Select Case Document.ActiveElement.Id.ToLower
        Case "global" : prueba()
        Case Else
    End Select

End Sub
如果您想查看名为
prueba()
的函数,请参见:

我有一个视频,在那里我展示了它,但是注释是西班牙语的:


我的函数还有一个问题,你可以看到,在底部我写了这样一个:

Else
     MsgBox("Este ModPack ya lo tienes instalado!")
End If

但它不起作用(

我的即时反应是鼠标按键发粘,但实际上这很可能是因为您正在加载的网页中加载了多个页面,从而添加了重复的事件处理程序。请在这行代码上设置断点:

AddHandler Document.Click, New HtmlElementEventHandler(AddressOf Document_Click)
您可能会看到它被命中两次。请确保仅连接一个HtmlElementEventHandler,以避免双重触发单击事件处理程序。在连接作为可能的解决方案之前,您可以检查e.Url是否匹配。

尝试以下方法:

PS:它是动态编写的,可能有一些语法错误

Private Sub WebBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As WebBrowserDocumentCompletedEventArgs) _
Handles WebBrowser1.DocumentCompleted

    Document = sender.Document
    try : removehandler Document.Click, addressof(Document_Click): catch :   end try
    AddHandler Document.Click, New HtmlElementEventHandler(AddressOf Document_Click)

End Sub

在vb.net中,无需在html中为按钮定义onclick,因为它是自动处理的。因此,如果执行此操作,则单击事件将触发twise。

oke。不确定您要问什么。请澄清,这是您的函数
prueba()
这被调用了两次?而且,这可能不是很关键,但它可能有助于给我们该词的英文定义。是的,它是一个被调用了两次的函数。Prueba在英语中的意思是“test”。您正在加载的文档中有多少帧?frames这个词是什么意思?我打错了一个“s”->adressof