2016-03-20 78 views
2

我正在瀏覽網頁在VB(IE引擎,我以後可能會用到GeckoFX),我已經使用我自定義的覆蓋了deafult上下文菜單,其中包括「在新標籤中打開」按鈕。VB.Net - 網頁瀏覽器,在新標籤頁中打開導航錯誤

當用戶點擊該按鈕時,它會創建另一個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瀏覽器中打開它的新WebBrowser組件將導航到正確的鏈接( WebBrowser1)。因此,如果用戶在第二個Web瀏覽器上並打開一個新選項卡,則第三個Web瀏覽器將在第二個Web瀏覽器已存在的位置導航。那麼,我該如何解決這個問題呢?

我該換什麼WebBrowser1.Document.ActiveElement

在此先感謝

+0

請使用正確的文字框或否則這會讓人非常討厭閱讀。 –

回答

0

你目前指的是每一次WebBrowser1。要引用當前的Web瀏覽器,您必須首先獲取選定的選項卡,然後您可以在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)。

+0

我得到一個錯誤:一個'System.NullReferenceException'類型的未處理的異常發生 –

+0

@AndrewGeo:對。把它放在你的'TabControl1.SelectTab(x1)'行之前,它應該工作。 –

+0

哦,上帝,謝謝你隊友,它工作:) –

相關問題