2012-03-26 59 views
1

我試圖在WebBrowser控件中啓用選項卡功能。我有一個TabControl託管WebBrowser控件在每個選項卡中。多線使文本框進入網站。它看起來像這樣,創建選項卡啓用WebBrowser

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控件添加到SelectedTab位置的TabControl。由於默認選中的選項卡是第一個選項卡,因此只會將其添加到第一個選項卡,因此僅執行該瀏覽器。

我想知道如何從循環中選擇下一個選項卡作爲SelectedTab,這樣當循環一次又一次地運行時,它會繼續向每個選項卡添加WeBrowser控件。

回答

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新實例明確,在你循環,以確保您的web瀏覽器添加到適當的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 
+0

哇......現在它的作品非常漂亮!非常感謝你。 :)我看到,將WebBrowser添加到TabPage並將其添加到TabControl。你是對的。我一直在搞一個完全沒有必要的選擇頁面的東西。再次感謝你。 – Isuru 2012-03-26 15:09:12