VB.Net - Webbrowser,在新标签页中打开导航错误

时间:2016-03-20 15:40:08

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

我在Web浏览器上工作在VB(IE引擎,我稍后会使用GeckoFX),我已经使用我的自定义菜单覆盖了deafult Context菜单,其中包括" Open In New标签"按钮。

当用户点击该按钮时,它会创建另一个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

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

我该怎样替换WebBrowser1.Document.ActiveElement ??

提前致谢

1 个答案:

答案 0 :(得分:0)

您目前每次都指的是WebBrowser1。要引用当前的网络浏览器,您必须先获取所选标签,然后才能获得WebBrowser内的TabPage

如果您的标签页中只有WebBrowser控件,或者您知道控件总是具有相同的索引,则可以这样做:

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

使用DirectCast,您将SelectedTab的第一个控件投射到WebBrowser

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