【问题标题】:VB.Net - Webbrowser, Open In New Tab Navigation ErrorVB.Net - Webbrowser,在新选项卡中打开导航错误
【发布时间】:2016-03-20 15:40:08
【问题描述】:

我正在使用 VB 中的网络浏览器(IE 引擎,我稍后可能会使用 GeckoFX)并且我已经使用我的自定义菜单覆盖了默认的上下文菜单,其中包括一个“在新选项卡中打开”按钮。

当用户单击该按钮时,它会创建另一个 TabPage,其中包含另一个 Web 浏览器,该浏览器从前一个 Web 浏览器导航到该链接。

这是我的代码:

Private Sub ToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click
    Dim x1 As New TabPage
    Dim B1 As New WebBrowser
    TabControl1.TabPages.Add(x1)
    TabControl1.SelectTab(x1)
    B1.IsWebBrowserContextMenuEnabled = False
    B1.ContextMenuStrip = Open
    B1.Dock = DockStyle.Fill
    TabControl1.SelectedTab.Controls.Add(B1)
    Dim Elem As HtmlElement = WebBrowser1.Document.ActiveElement
    Dim target As String = Elem.GetAttribute("href")
    B1.Navigate(target)
End Sub

但是,由于这条线:

Dim Elem As HtmlElement = WebBrowser1.Document.ActiveElement

如果用户从第一个 Web 浏览器 (WebBrowser1) 打开新的WebBrowser 组件,它将导航到正确的链接。因此,如果用户在第二个网络浏览器上并打开一个新选项卡,第三个网络浏览器将导航到第二个网络浏览器已经在的位置。那么,我应该如何解决这个问题?

我应该用什么替换WebBrowser1.Document.ActiveElement??

提前致谢

【问题讨论】:

  • 请使用正确的大小写,否则阅读起来会很烦人。

标签: .net vb.net winforms webbrowser-control tabcontrol


【解决方案1】:

您目前每次都引用WebBrowser1。要引用当前的网络浏览器,您必须首先获取选定的选项卡,然后您可以在该TabPage 中获取WebBrowser。

如果您的标签页中只有一个WebBrowser 控件,或者您知道该控件始终具有相同的索引,您可以这样做:

Dim Elem As HtmlElement = DirectCast(TabControl1.SelectedTab.Controls(0), WebBrowser).Document.ActiveElement

使用DirectCast,您将SelectedTab 的第一个控件转换为WebBrowser。

SelectedTab.Controls 是容器中所有控件的集合。第一个控件通过索引 0 访问(因此 SelectedTab.Controls(0) 中的 0)。

【讨论】:

  • 我收到一条错误消息:发生了“System.NullReferenceException”类型的未处理异常
  • @AndrewGeo:对。将它放在您的 TabControl1.SelectTab(x1) 行之前,它应该可以工作。
  • @AndrewGeo:不客气!我在网络浏览器类别中做了很多事情(添加选项卡是第一个),所以我发现与我曾经做过的事情有很多相似之处。 :)
  • 在阅读您的评论时,我认为您可能在不久的将来能够回答几个问题。然后我打开我的项目,却发现我想不出一种方法来获取新 Web 浏览器控件的导航页面(用于更新历史记录、更改 tab.text 等)。那么,你能指导我完成这个,我应该开始一个新的话题吗?附言说我们的代码之间有相似之处实际上是一种恭维,因为我 16 岁并且我在 VB.Net 中编程的时间只有一年左右:)
  • @AndrewGeo :嗯,我今年 17 岁,我从 8 年开始使用 VB 编程,从 7 年开始使用 VB.NET :)。为了帮助您处理您的请求,通过电子邮件继续会更容易。 --- 如果您进入我的 Stack Overflow 个人资料和我的网站(注意背景声音),然后进入 支持 部分,您可以找到我的支持 e-邮寄到那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2021-06-19
  • 2020-09-02
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多