Создание вкладок включено WebBrowser - PullRequest
1 голос
/ 26 марта 2012

Я пытаюсь включить функциональность вкладок в элементе управления WebBrowser. У меня есть TabControl, размещающий элементы управления WebBrowser в каждой вкладке. А многострочный позволяет Textbox вводить сайты. Это выглядит примерно так:

enter image description here

Это код, который у меня есть.

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim m As String()
        Dim w As New WebBrowser
        Dim i As Integer

        TabControl1.TabPages.RemoveAt(0)

        m = TextBox1.Text.Split(Environment.NewLine)

        For Each k As String In m
            TabControl1.TabPages.Add(i, k.Trim)
            TabControl1.SelectedTab.Controls.Add(w)
            w.Dock = DockStyle.Fill
            w.Navigate(k)
            i = i + 1
        Next

    End Sub
End Class

Предполагается взять каждую строку (URL) и выполнить их в отдельной вкладке. Это открывает правильное количество вкладок в соответствии с пользовательским вводом. Однако только выполняет последний URL.

Я думаю, у меня есть представление о том, что здесь не так. Эта строка

TabControl1.SelectedTab.Controls.Add(w)

Добавляет элемент управления WebBrowser к TabControl в позиции SelectedTab. Поскольку выбранная по умолчанию вкладка является первой, она добавляет ее только к первой вкладке, поэтому выполняет только этот браузер.

Я хочу знать, как выбрать следующую вкладку из цикла в качестве SelectedTab, чтобы при повторном запуске цикла он продолжал добавлять элементы управления WeBrowser на каждую вкладку.

1 Ответ

1 голос
/ 26 марта 2012

В вашем примере вам нужно переместить создание для 'w' (WebBrowser) в цикл For Each.Вы используете один экземпляр w, который по существу перемещается в между вкладками во время выполнения цикла.

Вы хотите что-то вроде этого

For Each k As String In m
    Dim w As New WebBrowser() ' <-- Move the construction of WebBrower into the loop
    TabControl1.TabPages.Add(i, k.Trim)
    TabControl1.SelectedTab.Controls.Add(w)
    w.Dock = DockStyle.Fill
    w.Navigate(k)
    i = i + 1
Next

Также я не уверен, что TabPages.Add обновит SelectedTab, вы можете рассмотреть возможность создания новых экземпляров TabPage явно, в пределахВы зацикливаетесь, чтобы убедиться, что добавляете WebBrowser на соответствующую вкладку TabPage.

Dim tabPage As New TabPage(url) ' <-- 'k' in your example
tabPage.Controls.Add(w) 
w.Dock = DockStyle.Fill
w.Navigate(url) 
TabControl1.TabPages.Add(tabPage) ' <-- Add the tabPage to the TabControl 
...