创建选项卡启用了WebBrowser

时间:2012-03-26 13:59:43

标签: vb.net webbrowser-control tabcontrol

我正在尝试在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)并在单独的选项卡中执行它们。它根据用户输入打开正确数量的选项卡。但是执行最后一个网址。

我想我知道这里有什么问题。这一行

TabControl1.SelectedTab.Controls.Add(w)

它将WebBrowser控件添加到SelectedTab位置的TabControl。由于默认选择的选项卡是第一个,因此它仅将其添加到第一个选项卡,因此仅执行该浏览器。

我想知道如何从循环中选择下一个选项卡作为SelectedTab,这样当循环一次又一次地运行时,它会继续向每个选项卡添加WeBrowser控件。

1 个答案:

答案 0 :(得分:1)

在您的示例中,您需要将“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