我有一个被调用两次的功能,我不知道该怎么做。
当我按下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()
的功能,请执行以下操作:http://pastebin.com/Fi5LLX2N
我有一个我展示的视频,但注释是西班牙语:http://www.youtube.com/watch?v=OCJXk3qJwVA
我的功能还有另一个问题,正如你所看到的,我已经把它放在了底部:
Else
MsgBox("Este ModPack ya lo tienes instalado!")
End If
但它不起作用。 :(
答案 0 :(得分:0)
我的直接反应是粘鼠标按钮,但实际上可能是由于您正在加载的网页正在加载多个页面,因此添加了重复的事件处理程序。在这行代码上放置一个断点:
AddHandler Document.Click, New HtmlElementEventHandler(AddressOf Document_Click)
你可能会看到它被击中两次。确保只连接一个HtmlElementEventHandler以避免单击事件处理程序的双重触发。在连接之前,您可以检查e.Url是否匹配。
答案 1 :(得分:0)
试试这个:
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
答案 2 :(得分:0)
在vb.net中,没有必要在html for button中定义onclick,因为它是自动处理的。如果你这样做,那么click事件将会触发twise。