Visual Basic.NET - Agregar evento a Enlace en Webbrowser

   
Vista:

Agregar evento a Enlace en Webbrowser

Publicado por Julián (3 intervenciones) el 16/04/2012 12:10:43
Hola, necesito obtener el nombre del hipervínculo sobre el cual se hace clic en una página cargada en un webbrowser y a su vez ejecutar un procedimiento que se encuentra en el formulario e utiliza el nombre del enlace como parámetro, por lo que he leído e investigado, tengo que agregar un evento al link mediante la sentencia AddHandler, el tema es que con los códigos que he buscado en Internet tengo dificultades, pese a que a muchos les funciona, a continuación pego el código que se me ha aconsejado, y debajo el que he modificado y funciona a medias.

Luego de intentar repetidas veces, he logrado verificar lo siguiente:
Con el siguiente código:

For Each link As mshtml.IHTMLElement In doc.Links
Dim anchor As mshtml.HTMLAnchorElement = TryCast(link, mshtml.HTMLAnchorElement)
If anchor IsNot Nothing Then
Dim handler As mshtml.HTMLAnchorEvents_Event = TryCast(anchor, mshtml.HTMLAnchorEvents_Event)
If handler IsNot Nothing Then
AddHandler handler.onclick, AddressOf ClickLink
End If
End If
Next

El For Each se detiene en la primer linea, sin mostrar error alguno, en la depuración ni siquiera pasa por el Next, sin embargo el número de links es el correcto, se corta abruptamente el procedimiento.

Con este otro código:

For i As Integer = 0 To doc.Links.Count - 1
Dim anchor As mshtml.HTMLAnchorElement = TryCast(doc.Links(i), mshtml.HTMLAnchorElement)
If anchor IsNot Nothing Then
Dim handler As mshtml.HTMLAnchorEvents_Event = TryCast(anchor, mshtml.HTMLAnchorEvents_Event)
If handler IsNot Nothing Then
AddHandler handler.onclick, AddressOf ClickLink
End If
End If
Next

El bucle se ejecuta la cantidad de veces en forma correcta, pero la conversión TryCast(doc.Links(i), mshtml.HTMLAnchorElement)siempre devuelve Nothing, en consecuencia el If de abajo que posee la instrucción AddHandler handler.onclick, AddressOf ClickLink nunca se ejecuta.

Gracias a todos por la ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder