我正在尝试在WebBrowser控件中启用标签功能。我在每个选项卡中都有一个TabControl托管WebBrowser控件。多行使Textbox可以进入网站。它看起来像这样,
这是我的代码。
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控件。
答案 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