我正在尝试使用 WebBrowser 控件为弹出窗口启动一个新表单,而不是在 IE 中打开它。我尝试使用 AxWebBrowser 来获取与 NewWindow3 事件一起使用的弹出窗口,并且只是在做e.ppDisp = AxWebBrowser.Application
,但是 AxWebBrowser 有很多限制。因此,我试图扩展普通的 WebBrowser 以包含像 AxWebBrowser 这样的 NewWindow3 事件,但遇到了问题。e.ppDisp = AxWebBrowser.Application
如果我继续,我收到错误:“检测到 InvalidVariant”,然后是“指定的 OLE 变体无效” 。
注意:这是我第一次扩展课程,所以我可能会忽略一些简单的东西。如果我尝试在新窗口中导航到新 URL,我会从该站点收到 java 脚本错误。
我已经根据评论更新了代码库。已删除 ExtendedWebBrowser 类以获得更小更好的版本。这是新代码:
从主窗体和一个非常相似的 BrowserPopup 窗体 -
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
nativeBrowser = DirectCast(ExtendedWebBrowser1.ActiveXInstance, SHDocVw.WebBrowser)
AddHandler nativeBrowser.NewWindow3, AddressOf nativeBrowser_NewWindow3
AddHandler nativeBrowser.WindowClosing, AddressOf nativeBrowser_WindowClosing
End Sub
Private Sub nativeBrowser_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwflags As UInteger, ByVal bStrUrlContext As String, ByVal bstrUrl As String)
Dim popup = New BrowserPopup()
popup.Show(Me)
popup.browserPop.DocumentText = bStrUrlContext
ppDisp = popup.browserPop.ActiveXInstance
End Sub
Private Sub nativeBrowser_WindowClosing(ByVal IsChildWindow As Boolean, ByRef Cancel As Boolean)
MsgBox("working?") '<<<Doesn't Trigger>>>
End Sub
Protected Overrides Sub OnFormClosing(ByVal e As FormClosingEventArgs)
MyBase.OnFormClosing(e)
End Sub
此外,如果有帮助,这里是来自页面的脚本,它应该能够关闭弹出表单,但似乎只是停用了 WebBrowser。
<table isListBtn="false" cellpadding="0" enabled="true" class="buttonBorderBlue"
cellspacing="0" border="0" onClick="if (typeof(workpaneMediator_toolbar)!='undefined')
workpaneMediator_toolbar.onSelect('CANCEL_ACTION', this)"
actionType="CLOSE_WINDOW_TYPE" id="workpaneMediator_toolbar_CANCEL_ACTIONWrapper"
nowrap><tr><td class="buttonBlueTD">