我正在尝试从 WPF 应用程序创建 Internet Explorer 的实例,加载保存的本地文件,并在加载文件后进行一些进一步的处理。但是,尽管文件在 Internet Explorer 窗口中可见,但该DocumentComplete
事件永远不会触发:
'static field
Dim iex As ShDocVw.InternetExplorer
Public Sub DoStuff()
Dim path = "c:\test.htm"
iex = New SHDocVw.InternetExplorer
iex.Visible = True
AddHandler iex.DocumentComplete, Sub(o As Object, ByRef url As Object)
'This code is never executed
Dim i = 5
End Sub
iex.Navigate2(path)
End Sub
当我导航到非本地 URL(例如http://www.google.com)时,该DocumentComplete
事件会触发。
该NavigateComplete2
事件存在相同的行为。
我尝试使用类成员方法而不是 lambda 表达式(一旦方法退出,lambda 表达式可能会超出范围?)同时使用AddressOf
and Handles
,但这没有帮助。
我必须做什么才能让DocumentComplete
事件触发?
(注意:页面没有框架。)
更新
此代码正在类库中使用,因此我无法使用 WebBrowser 控件,因为它无法在代码中实例化。
正如 SimonMourier 在评论中指出的那样,可以在代码中实例化 WebBrowser:
Dim wb = New WebBrowser
AddHandler wb.LoadCompleted, Sub(s, e)
Dim i = 5
End Sub
wb.Navigate(path)
尽管 LoadCompleted 事件仍然不会触发,但 Navigated 事件会触发,而且它似乎足以满足我的目的。(显然,WebBrowser 必须可见才能使 LoadCompleted 触发 - 请参见此处和此处- 由于我没有在窗口的上下文中使用 WebBrowser,因此我认为这在我的情况下甚至是不可能的。 )