Необходимо отлавливать события пользователя в html-документе, загружаемом в WebBrowser в форме (VB.NET). Для отлова события клика мышью по различным элементам декларирую в модуле:
Public clsDoc As New clsDocument
После загрузки документа в WebBrowser:
clsDoc.DocumentCtl = WB.Document.DomDocument
Класс обработки события:
Public Class clsDocument
Private WithEvents mDoc As mshtml.HTMLDocument ' Событийная переменная документа в обозревателе
Public WriteOnly Property DocumentCtl() As mshtml.HTMLDocument
Set(ByVal Value As mshtml.HTMLDocument)
mDoc = Value
End Set
End Property
Private Function mDoc_onclick() As Boolean Handles mDoc.onclick
Dim el As mshtml.HTMLElementCollection = mDoc.parentWindow.event.srcElement
call msgbox("Нажата тег "+el.tagname)
End Function
End Class
События отлавливаются, как надо, однако из-за этого блокируются все другие события в документе (например, выделение текста, ввод символов в текстовые поля и т.д.)
Как сделать, чтобы при перехвате событий они обрабатывлись не ВМЕСТО, а ВМЕСТЕ с установленными для документа событиями.
VbStarter пишет:
Private Function mDoc_onclick() As Boolean Handles mDoc.onclick
проблема в этом. по нажатию выполняется этот (пользовательский) код, перекрывая всё остальное.
Нет, не думаю, что в этом. Если закоментировать всю функцию mDoc_onclick, оставив в модуле класса только функцию описания свойства класса, и в этом случае документ в WebBrowser остаётся мёртвым.
В msdn на англицком я нашёл, что WithEvents может как подменять родные события, так и выполняться вместе с ними, но вот как обеспечить второй вариант - нигде не нашёл.