我有 Web 浏览器控件,其中包含许多链接和数据。所有这些数据都来自网络服务。
现在,当我单击第一个网络浏览器链接时,我想打开另一个网络浏览器控件。那么怎么做呢?
我的第一个网络浏览器代码是:
webBrowser1.NavigateToString(htmlCode);
我有 Web 浏览器控件,其中包含许多链接和数据。所有这些数据都来自网络服务。
现在,当我单击第一个网络浏览器链接时,我想打开另一个网络浏览器控件。那么怎么做呢?
我的第一个网络浏览器代码是:
webBrowser1.NavigateToString(htmlCode);
您可以在 webBrowser1 下隐藏另一个 webBrowser。让我们称之为webBrowser2
。现在,当用户点击 webBrowser1 上的链接时,将其捕获为一个字符串,比如说link
. 现在您可以导航到link
使用webBrowser2.Navigate(new Uri(link,UriKind.Absolute));
. 不要忘记让 webBrowser1 隐藏而 webBrowser2 可见。
如果我理解你,你想在你的第一个 WB 控件(称为 WB1)中拦截 onClick 事件,并在另一个 WB 控件(称为 WB2)中打开该页面(单击超链接时)?
有几种方法可以做到这一点,此链接是否设置为在新窗口中打开?如果有,可以拦截NewWindow2事件为WB1,在WB1的NewWindow2事件中运行如下代码... Set pDisp = WB2.object
(它可能是 ppDisp 而不是 pDisp,但它会在您的事件自动生成时显示,请选择参数列表中显示的任何对象名称)。
否则,您可以在WB1事件的BeforeNavigate2事件期间拦截该请求,检查URL属性是否是您感兴趣的链接,如果是,则取消当前请求并重新发出一个新的请求,如下所示...(在WB1 BN2 事件)... Cancel = True ' 这将取消请求 WB2.Navigate2 URL, , "YourWB2sDocumentNameOrTargetFrameNameGoesHere"
第二行代码只是重新发出请求。
当然,YourWB2sDocumentNameOrTargetFrameNameGoesHere 是 TargetFrameName(或 WB2 控件/窗口中顶级文档或任何 iframe 的框架或文档名称)。这通常可以在 BODY tags name= 属性中找到,但如果您只想将其加载为 WB2 中的顶级文档,您甚至不需要这样做......如果您只想将其加载为WB2 中的父顶级文档,只需执行此操作... Cancel = True WB2.Navigate2 URL
通过引用 WB2,它只会在取消 WB1 请求后向 WB2 窗口发送相同的 URL 请求。
如果您需要更多帮助,请告诉我,并告诉我您的相处方式。