2016-03-20 6 views
2

Я работаю над веб-браузером В VB (движок IE, я буду использовать GeckoFX позже, возможно), и я переопределил контекстное меню deafult, используя мой пользовательский, который включает кнопку «Открыть в новой вкладке».VB.Net - Webbrowser, Открыть в новой вкладке Ошибка навигации

Когда пользователь нажимает кнопку, он создает еще один TabPage с другим веб-браузером, внутри которого перемещается по ссылке из предыдущего веб-браузера.

Вот мой код:

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). Таким образом, если пользователь находится во втором веб-браузере и открывает новую вкладку, третий веб-браузер будет перемещаться там, где уже есть второй веб-браузер. Итак, как я должен это исправить?

С чем мне следует заменить WebBrowser1.Document.ActiveElement ??

Заранее спасибо

+0

Пожалуйста, используйте Correct Word Casing или Else, что очень раздражает чтение. –

ответ

0

Вы в настоящее время со ссылкой на WebBrowser1 каждый раз. Чтобы обратиться к текущему веб-браузеру, вы должны сначала получить выбранную вкладку, затем вы можете получить WebBrowser внутри этого TabPage.

Если у вас есть только WebBrowser контроль в вашей вкладке, или вы знаете, что управление всегда имеет один и тот же индекс можно сделать так:

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

Использование DirectCast вы применяете первый контроль SelectedTab «s до WebBrowser.

SelectedTab.Controls - это совокупность всех элементов управления в контейнере. Доступ к первому элементу управления осуществляется через индекс 0 (поэтому 0 в SelectedTab.Controls(0)).

+0

Я получаю сообщение об ошибке: произошло необработанное исключение типа «Исправление System.NullReferenceException» –

+0

@AndrewGeo: Right. Поместите его перед строкой 'TabControl1.SelectTab (x1)', и она должна работать. –

+0

О, Боже, спасибо, он работает :) –

 Смежные вопросы

  • Нет связанных вопросов^_^